函数计算+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 架构模式
相关文章
|
11天前
|
存储 前端开发 JavaScript
要在函数计算FC上部署SD-comfyui,您可以按照以下步骤操作:
要在函数计算FC上部署SD-comfyui,您可以按照以下步骤操作:
34 2
|
11天前
|
网络协议 Serverless 应用服务中间件
Serverless 应用引擎操作报错合集之阿里函数计算中在函数计算部署的stable diffusion应用无法访问如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
27 1
|
2天前
|
存储 人工智能 Serverless
“粘土风格”轻松拿捏,基于函数计算部署 ComfyUI实现AI生图
使用阿里云函数计算FC,快速部署AI绘画工具ComfyUI,体验高质量图像生成。新用户可享180元试用额度,包括GPU、vCPU、内存和调用次数。开通FC和文件存储NAS,通过应用中心选择ComfyUI模板创建应用。
“粘土风格”轻松拿捏,基于函数计算部署 ComfyUI实现AI生图
|
5天前
|
运维 监控 JavaScript
【阿里云云原生专栏】Serverless架构下的应用部署与运维:阿里云Function Compute深度探索
【5月更文挑战第21天】阿里云Function Compute是事件驱动的无服务器计算服务,让用户无需关注基础设施,专注业务逻辑。本文详述了在FC上部署应用的步骤,包括创建函数、编写代码和部署,并介绍了运维功能:监控告警、日志管理、版本管理和授权管理,提供高效低成本的计算服务。
133 6
|
11天前
|
运维 Serverless 应用服务中间件
Serverless 应用引擎产品使用之在阿里云Serverless中函数计算FC nginx 部署上去之后放置静态页面如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
268 0
|
11天前
|
运维 监控 Serverless
Serverless 应用引擎产品使用之在使用阿里云函数计算部署网站时,网站打开不稳定如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
219 1
|
11天前
|
缓存 运维 Serverless
Serverless 应用引擎产品使用之阿里函数计算中。将本地电脑上的项目文件部署到阿里云函数计算(FC)上并实现对外提供API和WebUI如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
42 1
|
11天前
|
运维 NoSQL Java
Serverless 应用引擎产品使用之在函数计算上部署Java服务并访问阿里云MongoDB如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
32 0
|
11天前
|
缓存 运维 Serverless
Serverless 应用引擎产品使用之在阿里云函数计算中使用Docker进行部署函数如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
32 0
|
11天前
|
运维 IDE Serverless
Serverless 应用引擎产品使用之阿里函数计算中,阿里云容器镜像服务(Container Registry)中创建自定义镜像,然后将其部署到FC上如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
31 0

热门文章

最新文章

相关产品

  • 函数计算