函数计算+HuggingFace部署

本文涉及的产品
简介: 函数计算一键部署huggingface模型

概述

函数计算上线huggingface应用模版,需求如下:

  • 用户只需要制定huggingface model_id、model_task等信息就能将模型一键拉起
  • 对外提供server服务,并以api形式输出,不提供UI页面

基于上述诉求,能让用户在函数计算一键拉起huggingface模型,便于用户基于函数计算使用模型,同时提供AI runtime的原子能力,让更多用户享受到大模型发展带来的红利

部署


创建应用进入到详情页

huggingface配置

image.png

其中主要涉及huggingface中的模型ID, 模型任务类型, 加载模型需要的库,已经huggingface access token, 下面以distilbert/distilbert-base-uncased-finetuned-sst-2-english为例,进入到模型详情页,https://huggingface.co/distilbert/distilbert-base-uncased-finetuned-sst-2-english

image.png

模型ID, 其中上图中标识1,即为模型ID

GPU配置

GPU相关配置按需调整即可 image.png

创建完成

创建完成直接通过域名调用即可,域名见下图位置

image.png

方案

分析huggingface中的模型,本身为了用户使用方便,huggingface提供了便捷性能优越的pipeline库便于用于直接基于pipeline使用模型,减小用户使用和学习成本。本方案就是基于huggingface封装的pipeline进行封装设计。而huggingface涉及到的pipeline主要分两类:

  • transformers
  • diffusers

在huggingface模型详情页有具体的模型划分,非常方便用户进行区分

概览

整个方案最终只需要用户指定huggingface的模型ID+模型task即可,依赖的云产品:

  • 函数计算, 用于提供算力
  • NAS

整个应用包括三个资源:

  • model_download, 初始化应用时进行模型下载
  • model_app, 部署模型提供api接口服务
  • NAS
  • 用于持久化模型(可选,不选择挂载的话模型每次服务启动都需要重新进行拉取)
  • 用于安装基础镜像中不支持的python库

image.png

详情

huggingface应用使用的huggingface提供的transformers和diffusers两个库进行模型加载,所以本身模型需要能支持这两个库进行加载才行。

transformers

如何确定模型能被transformers加载,可以进入到模型详情页,这里以distilbert/distilbert-base-uncased-finetuned-sst-2-english为例,如下图所示

image.png

如上如所示,圈出位置有Transformers代表能用transformers进行加载,就可以使用函数计算提供的huggingface应用模版

支持TASK列表

HuggingFace页面展示的TASK

部署函数计算huggingface时需要填写的model_task

Audio Classification

audio-classification

Automatic Speech Recognition

automatic-speech-recognition

Text-to-Audio

text-to-audio

Text-to-Speech

text-to-speech

Depth Estimation

depth-estimation

Image Classification

image-classification

Image Segmentation

image-segmentation

Image-to-Image

image-to-image

Object Detection

object-detection

Video Classification

video-classification

Zero-Shot Image Classification

zero-shot-image-classification

Zero-Shot Object Detection

zero-shot-object-detection

Fill-Mask

fill-mask

Question Answering

question-answering

Summarization

summarization

Table Question Answering

table-question-answering

Text Classification

text-classification

Text Generation

text-generation

Text2Text Generation

text2text-generation

Token Classification

token-classification

Translation

translation

Zero-Shot Classification

zero-shot-classification

Document Question Answering

document-question-answering

Feature Extraction

feature-extraction

Image Feature Extraction

image-feature-extraction

Image-to-Text

image-to-text

Mask Generation

mask-generation

Visual Question Answering

visual-question-answering

示例

下面是一个用户层面创建步骤

  • 进入到huggingface模型详情页,查看对应的模型ID/模型TASK/pipeline类型

以openai/whisper-large-v3为例,获取如下三个信息,如下三个信息在详情页不全的模型不支持部署

  • 1、model_id
  • 2、model_task
  • 3、pipeline类型(Transformers/Diffusers)

image.png

  • 在应用模版中填上如上三个信息, 其中模型任务见上文Task列表,进行创建应用即可,就会拉起一个加载该模型的server,对外提供API服务
  • api服务的入参可以简单使用{"data":{"input":"xxxxxx"}}

diffusers

如何确定哪些模型能使用diffusers进行加载,以runwayml/stable-diffusion-v1-5为例,查看模型详情页

image.png

如上图圈出有Diffusers标识的才可以使用

支持TASK列表

参考:https://huggingface.co/docs/diffusers/using-diffusers/pipeline_overview

image.png

HuggingFace页面展示的TASK

部署函数计算huggingface时需要填写的model_task

参考文档

Text-to-Image

text-to-image

https://huggingface.co/docs/diffusers/using-diffusers/conditional_image_generation

Image-to-Image

image-to-image

https://huggingface.co/docs/diffusers/using-diffusers/img2img

Inpainting

inpainting

https://huggingface.co/docs/diffusers/using-diffusers/inpaint

Depth-to-image

depth-to-image

https://huggingface.co/docs/diffusers/using-diffusers/depth2img

示例

下面是一个用户层面创建步骤

  • 进入到huggingface模型详情页,查看对应的模型ID/模型TASK/pipeline类型

以runwayml/stable-diffusion-v1-5为例,获取如下三个信息,如下三个信息在详情页不全的模型不支持部署

  • 1、model_id
  • 2、model_task
  • 3、pipeline类型(Transformers/Diffusers)

image.png

  • 在应用模版中填上如上三个信息, 其中模型任务见上文Task列表,进行创建应用即可,就会拉起一个加载该模型的server,对外提供API服务

API

由于不同的模型入参出参都是不同,具体API参数需要参考,由于huggingface模型加载主要使用两个库Transformers和Diffusers两个,所以API也进行区分

推理请求

POST /

具体body参数如下

Transformers

  • api服务的入参可以简单使用{"data":{"input":"xxxxxx"}}
  • 当然也支持传递更具体的参数,确定模型服务对外提供API参数,以transformers的pipeline为例,进入到https://huggingface.co/docs/transformers/main_classes/pipelines,根据模型对应的model_task找到对应pipelines,以text-classification(Text Classification)为例,在截图位置找到对应的pipeline, TextClassificationPipeline image.png

入参

进入到具体pipeline(TextClassificationPipeline)的详情,查看对应的__call__方法,函数参数就是对应的API的入

https://huggingface.co/docs/transformers/v4.39.3/en/main_classes/pipelines#transformers.TextClassificationPipeline.__call__

image.png

出参

__call__返回值即为出参数据,如pipeline(TextClassificationPipeline)出参

image.png

示例

// 请求:POST /
    // 简单调用
    {
      "data": {
        "input": "你好"
      }
    }
    
    // 或者基于__call__参数
    
    {
      "data": {
        "inputs": "你好",
        "top_k": 1,
        "fucntion_to_apply": "default"
      }
    }
// 结果
  {
    "data": [
        {
            "label": "NEGATIVE",
            "score": 0.7005688548088074
        }
      ]
  }

Diffusers

如何确定API入参,以runwayml/stable-diffusion-v1-5为例,

  • 进入模型详情页,找到下图中具体的pipeline信息(以Pipeline为后缀)

image.png

image.png

入参

pipeline详情中的__call__函数的入参就是API参数, https://huggingface.co/docs/diffusers/v0.27.2/en/api/pipelines/stable_diffusion/text2img#diffusers.StableDiffusionPipeline.__call__

image.png

示例

POST /
{
  "data":{
    "prompt": "a dog",
    "width": 512,
    "height": 512
  }
}

安装模型依赖

  • 在应用页面,找到模型推理函数,点击函数进入函数详情页

image.png

  • 执行一次推理,登录实例,以安装requests为例, 执行pip install requests --target=/mnt/${functionName}/python , 这里functionName=huggingface-s7xy-model-app也即推理函数名

image.png

示例

image.png

image.png

注意📢

  • 并不是所有的huggingface都支持pipeline部署,本次方案优先支持pipeline进行部署的模型,其他模型后续看方案进行支持
  • api的输出,默认np.ndarray->list, Image->base64
相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
2月前
|
机器学习/深度学习 并行计算 PyTorch
TensorRT部署系列 | 如何将模型从 PyTorch 转换为 TensorRT 并加速推理?
TensorRT部署系列 | 如何将模型从 PyTorch 转换为 TensorRT 并加速推理?
146 0
|
5月前
|
机器学习/深度学习 PyTorch TensorFlow
TensorRT 模型加速——输入、输出、部署流程
本文首先简要介绍 Tensor RT 的输入、输出以及部署流程,了解 Tensor RT 在部署模型中起到的作用。然后介绍 Tensor RT 模型导入流程,针对不同的深度学习框架,使用不同的方法导入模型。
373 1
|
2月前
|
存储 物联网 Serverless
玩转 AI 绘图,基于函数计算部署 Stable Diffusion可自定义模型
本文主要将带大家通过使用阿里云产品函数计算 FC 和文件存储 NAS ,快速使用 Stable Diffusion 实现更高质量的图像生成,本方案内置模型库+常用插件+ControlNet ,用户可根据自己的需要更换需要的模型、Lora、增加插件。
48869 27
玩转 AI 绘图,基于函数计算部署 Stable Diffusion可自定义模型
|
20天前
|
机器学习/深度学习 测试技术 TensorFlow
ModelScope模型使用与EAS部署调用
本文以魔搭数据的模型为例,演示在DSW实例中如何快速调用模型,然后通过Python SDK将模型部署到阿里云PAI EAS服务,并演示使用EAS SDK实现对服务的快速调用,重点针对官方关于EAS模型上线后示例代码无法正常调通部分进行了补充。
|
1月前
|
数据采集 物联网 Serverless
在函数计算FC中训练Lora模型
【2月更文挑战第15天】在函数计算FC中训练Lora模型
143 7
|
6月前
|
数据采集 Serverless Python
基于函数计算FC一键部署Stable Diffusion的数据怎么初始化格式化?
基于函数计算FC一键部署Stable Diffusion的数据怎么初始化格式化?
57 1
|
2月前
|
搜索推荐 语音技术 开发工具
ModelScope问题之文档部署到阿里云EAS 调用模型报错如何解决
ModelScope模型报错是指在使用ModelScope平台进行模型训练或部署时遇到的错误和问题;本合集将收集ModelScope模型报错的常见情况和排查方法,帮助用户快速定位问题并采取有效措施。
200 1
|
2月前
|
并行计算 TensorFlow 算法框架/工具
|
3月前
|
运维 Serverless
函数计算FC报错问题之SDXL模型报错如何解决
函数计算(Function Compute,FC)是一个事件驱动的全托管计算服务,允许用户编写并上传代码,而无需管理服务器运行和维护;在使用过程中,可能会遇到各种报错,本合集聚焦于函数计算FC常见的报错问题,提供一系列的故障排查指导和解决建议,帮助用户优化云端函数执行
226 0
|
4月前
|
Serverless 开发者
函数计算FC中搭建的Stable Diffusion模型
函数计算FC中搭建的Stable Diffusion模型
700 2

热门文章

最新文章

相关产品

  • 函数计算