在当今数字化时代,人工智能(AI)技术正以前所未有的速度改变着我们的生活方式和工作模式。其中,开源大模型作为AI领域的重要成果,为各行各业提供了强大的技术支持。魔搭社区(ModelScope)作为开源大模型的聚集地,为广大开发者提供了一个便捷的平台。通过结合函数计算,我们不仅能够快速部署这些大模型,还能利用函数计算的诸多优势,如按使量付费和弹性伸缩,高效地为用户提供文本生成服务。以下是我对魔搭社区与函数计算结合使用的测评体验。
一、初识魔搭社区与函数计算
魔搭社区(ModelScope)是一个开放的AI模型共享平台,汇聚了众多优质的开源大模型。这些模型涵盖了自然语言处理、计算机视觉、语音识别等多个领域,为开发者提供了丰富的选择。无论是想要进行文本生成、图像识别还是语音识别,都能在这里找到合适的模型。
函数计算则是一种无服务器计算服务,它允许开发者在不管理服务器的情况下运行代码。函数计算会根据实际请求量自动伸缩计算资源,并按实际使用量收费,极大地降低了运维成本和时间成本。可以将更多的精力投入到算法优化和业务逻辑上,而无需担心底层资源的配置和管理。
二、基于函数计算快速部署开源大模型
1、 方案概览
只需10分钟就可以将开源大模型轻松部署到阿里云函数计算上,畅享大模型的强大功能。无需拥有或维护昂贵的GPU资源,按需付费的模式更能帮助您节省成本,尽情体验云计算带来的便利与灵活性。
2、 环境准备
1)注册阿里云账号 2)开通函数计算 3)开通文件存储NAS服务 4) 注册ModelScope账号,并绑定阿里云账号。
在魔搭访问(https://www.modelscope.cn/my/myaccesstoken) 按照下图绑定阿里云账号。
3、 部署应用
1)在魔搭访问(https://www.modelscope.cn/my/myaccesstoken) 获取令牌。
2)访问函数计算应用模板,
- 参考图片模型来源选择ModelScope;
- 模型ID填入ZhipuAI/chatglm3-6b;
- 模型版本填入v1.0.2;
- 地域目前仅支持华东1(杭州)或华东2(上海),选择华东2(上海);
- 模型任务类型填入chat;
- Access Token 填入ModelScope 的访问令牌。
- 其余配置项保持默认值即可,单击创建应用。
创建中, 创建时间2024年11月2日 20:30:31,完成时间2024年11月2日 20:38:37 耗时为8分钟。
3)创建成功后,为应用开启闲置预留模式。配置预留实例,可以有效避免因实例冷启动导致的请求延迟问题。同时,可以配置预留实例的弹性伸缩规则如定时伸缩和水位伸缩,提高实例使用率,解决资源浪费问题。
应用部署完成后,在资源信息区域单击后缀为model-app-func的函数名称跳转至函数详情页。
在函数详情页,选择配置页签,在左侧导航栏,选择预留实例,然后单击创建预留实例数策略。
在创建预留实例数策略页面,版本和别名选择为LATEST,预留实例数设置为1,启用闲置模式,然后单击确定。
等待容器实例成功启动后,可以看到当前预留实例数为1,且显示已开启闲置模式字样,表示闲置预留实例已成功启动
整个部署过程非常顺畅耗时8分钟,只需要关注模型的选择、版本和任务类型,无需担心底层资源的配置和管理。函数计算平台会根据实际请求量自动伸缩计算资源,确保服务的稳定性和高效性。
三、体验使用LLM应用
部署完成后,可以使用函数计算应用提供的域名访问服务,与模型进行对话。
1、在环境详情页面,点击访问域名右侧的域名,使用LLM应用。
2、输入文本信息,然后单击Submit,您可以看到模型的回答结果。
初次的处理结果每次交互大概1分钟左右。
四、资源清理
1、删除ModelScope使用的函数
登录函数计算控制台,在左侧导航栏,单击应用。在应用页面,找到目标应用,单击右侧操作列的删除应用。
删除应用提示失败
需要手动删除函数和域名
2、登录NAS文件存储控制台,在左侧导航栏选择文件系统 > 文件系统列表。在文件系统列表,找到目标文件系统,在其右侧操作列,然后单击删除。
五、总结
通过本次对魔搭社区与函数计算结合使用的体验,深刻感受到了开源大模型和无服务器计算技术的强大魅力。这些技术不仅为开发者提供了丰富的选择和便捷的工具,还极大地提高了服务的稳定性和高效性。
关于本次实践体验的反馈和建议如下:
1、本次实践中配置了预留实例,但没有很好体现出预留实例的功能及作用,可以增加下配置预留实例和不配置预留实例的使用对比。
2、在部署过程中函数应用创建时在日志里有报错,但可以部署成功,暂时也没有影响使用,可以看下是否需要优化。
Duration: 342752.33 ms, Billed Duration: 342753 ms, Memory Size: 16384 MB, Max Memory Used: 11980.74 MB
========= FC invoke Logs end =========
Invoke instanceId: c-67261bcd-1663628b-aa8652a176d2
Code Checksum: 13447116201843826969
Qualifier: LATEST
RequestId: 1-67261bcd-169f5165-95f2f369919d
Error Type: InvocationError
Invoke Result:
{
"errorMessage": "File pytorch_model.bin.index.json download incomplete, content_length: None but the file downloaded length: 20437, please download again",
"errorType": "FileDownloadError",
"stackTrace": [
[
"File \"/code/index.py\"",
"line 13",
"in handler",
"snapshot_download (model_id =model_id,"
],
[
"File \"/code/modelscope/hub/snapshot_download.py\"",
"line 153",
"in snapshot_download",
"http_get_file("
],
[
"File \"/code/modelscope/hub/file_download.py\"",
"line 319",
"in http_get_file",
"raise FileDownloadError(msg)"
]
]
}
3、在清理函数资源的时候,发生了报错。需要手动删除函数和域名。针对这部分可以补充在清理资源部分——删除失败如何处理。
4、整个体验的场景中没有展现出函数计算的弹性伸缩优势,可以增加这部分的场景验证。比如模拟对话量请求量增加时,平台会自动增加计算资源以满足需求;当请求量减少时,平台会自动释放多余的计算资源以降低成本。
5、在实际生产中会使用多个大模型,如果需要在不同的模型之间切换,是否可以在当前的部署函数应用实现,还是每一个模型都需要部署一个函数应用。
6、若自己来选择大模型的配置,函数计算页面提示中模型ID、模型版本、模型任务类型获取方式不够详细,希望可以增加这个参数的获取魔搭具体页面截图。
7、什么情况下需要自己修改显存大小和内存大小?
8、访问模型的时候,在处理对话的期间,右上角的数字一直在增长,这是处理的时间吗?还是什么值,作用是什么?