Skip to content

devsapp/start-huggingface

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

注:当前项目为 Serverless Devs 应用,由于应用中会存在需要初始化才可运行的变量(例如应用部署地区、函数名等等),所以不推荐直接 Clone 本仓库到本地进行部署或直接复制 s.yaml 使用,强烈推荐通过 s init ${模版名称} 的方法或应用中心进行初始化,详情可参考部署 & 体验

start-huggingface 帮助文档

HuggingFace(fc3.0)

前期准备

使用该项目,您需要有开通以下服务并拥有对应权限:

服务/业务 权限 相关文档
函数计算 AliyunFCFullAccess 帮助文档 计费文档
NAS AliyunNASFullAccess 帮助文档 计费文档
VPC AliyunVPCFullAccess 帮助文档 计费文档

免责声明:
本项目会将模型下载到NAS,并且使用函数计算的GPU实例,模型的大小会影响文件存储占用以及函数执行时间,需根据情况具验证模型下载及加载所产生的费用。

部署 & 体验

案例介绍

本案例支持将huggingface各种开源模型,快速部署到阿里云函数计算FC,并提供相应的推理API服务。

Hugging Face 是一个旨在推动自然语言处理(NLP)技术和工具发展的开源社区和公司。他们致力于提供各种NLP任务中的最新技术、模型和工具,以及为开发者提供便捷的方式来使用、微调和部署这些技术。Hugging Face 在NLP领域中的贡献得到了广泛认可,成为了许多开发者和研究者的重要资源。除了自然语言处理,还支持处理图像和音频等多模态任务,社区还提供海量的预训练模型和数据集。

将huggingface模型部署至函数计算Serverless GPU具有以下优势:

a). 成本效益: Serverless 架构使得资源利用更加灵活,可以根据需求动态分配和释放资源,从而降低成本。利用 Serverless GPU,开发者可以根据实际需要分配 GPU 资源,而不必一直支付固定的 GPU 租用费用。

b). 弹性扩展: 在需求量增加时,Serverless GPU 能够自动扩展以满足更高的负载,而不会因为硬件限制导致性能瓶颈。这种弹性扩展使得系统能够更好地应对突发流量和高负载情况。

c). 简化管理: 使用 Serverless GPU,开发者无需关心底层硬件和软件的管理维护工作,如服务器配置、操作系统更新等。平台提供商负责管理基础设施,开发者只需专注于模型开发和部署。

d). 高可用性: Serverless GPU 架构通常具有高可用性,因为服务商会自动处理故障转移和容错机制。这样可以确保模型服务的持续可用性,提高系统稳定性和可靠性。

e). 灵活部署: Serverless GPU 可以根据应用程序的需求部署到不同的地理位置,以降低延迟和提高性能。同时,也可以轻松地跨多个云平台进行部署,提高了系统的灵活性和可移植性。

综上所述,将huggingface模型部署至 函数计算 GPU 上具有降低成本、弹性扩展、简化管理、高可用性和灵活部署等必要性,可以帮助开发者更高效地部署和管理模型服务。

使用流程

huggingface配置

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

模型ID,其中上图中标识1,即为模型ID
模型任务类型, 其中上图中标识的2, 即为任务类型。模版中的认为类型需要映射下,具体映射规则见下表
加载模型需要的库, 图中3位置即为需要加载的模型库,选择模版中的Transformers即可
access token, 进入到https://huggingface.co/settings/tokens,页面获取即可

详情

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

transformers

如何确定模型能被transformers加载,可以进入到模型详情页,这里以distilbert/distilbert-base-uncased-finetuned-sst-2-english为例,如下图所示 如上如所示,圈出位置有Transformers代表能用transformers进行加载,就可以使用函数计算提供的huggingface应用模版

支持TASK列表
Task Category Task Identifier
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

diffusers

如何确定哪些模型能使用diffusers进行加载,以runwayml/stable-diffusion-v1-5为例,查看模型详情页 如上图圈出有Diffusers标识的才可以使用

支持TASK列表

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

HuggingFace Task Model Task Identifier
Text-to-Image text-to-image
Image-to-Image image-to-image
Inpainting inpainting
Depth-to-image depth-to-image

API

见:https://developer.aliyun.com/article/1476133

注意事项

开发者社区

您如果有关于错误的反馈或者未来的期待,您可以在 Serverless Devs repo Issues 中进行反馈和交流。如果您想要加入我们的讨论组或者了解 FC 组件的最新动态,您可以通过以下渠道进行:

微信公众号:serverless 微信小助手:xiaojiangwh 钉钉交流群:33947367