注:当前项目为 Serverless Devs 应用,由于应用中会存在需要初始化才可运行的变量(例如应用部署地区、函数名等等),所以不推荐直接 Clone 本仓库到本地进行部署或直接复制 s.yaml 使用,强烈推荐通过
s init ${模版名称}
的方法或应用中心进行初始化,详情可参考部署 & 体验 。
HuggingFace(fc3.0)
使用该项目,您需要有开通以下服务并拥有对应权限:
服务/业务 | 权限 | 相关文档 |
---|---|---|
函数计算 | AliyunFCFullAccess | 帮助文档 计费文档 |
NAS | AliyunNASFullAccess | 帮助文档 计费文档 |
VPC | AliyunVPCFullAccess | 帮助文档 计费文档 |
免责声明:
本项目会将模型下载到NAS,并且使用函数计算的GPU实例,模型的大小会影响文件存储占用以及函数执行时间,需根据情况具验证模型下载及加载所产生的费用。
- 🔥 通过 Serverless 应用中心 , 该应用。
- 通过 Serverless Devs Cli 进行部署:
- 安装 Serverless Devs Cli 开发者工具 ,并进行授权信息配置 ;
- 初始化项目:
s init start-huggingface -d start-huggingface
- 进入项目,并进行项目部署:
cd start-huggingface && s deploy -y
本案例支持将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中的模型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加载,可以进入到模型详情页,这里以distilbert/distilbert-base-uncased-finetuned-sst-2-english为例,如下图所示 如上如所示,圈出位置有Transformers代表能用transformers进行加载,就可以使用函数计算提供的huggingface应用模版
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进行加载,以runwayml/stable-diffusion-v1-5为例,查看模型详情页 如上图圈出有Diffusers标识的才可以使用
参考: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 |
见:https://developer.aliyun.com/article/1476133
您如果有关于错误的反馈或者未来的期待,您可以在 Serverless Devs repo Issues 中进行反馈和交流。如果您想要加入我们的讨论组或者了解 FC 组件的最新动态,您可以通过以下渠道进行:
微信公众号:serverless |
微信小助手:xiaojiangwh |
钉钉交流群:33947367 |