本文以部署ModelScope社區的通義千問-7B-Chat模型為例,演示如何使用數據緩存。通過數據緩存提前拉取通義千問-7B-Chat模型數據,然后在創建通義千問的應用實例時直接掛載模型數據,可以免去在實例中拉取模型數據的等待時間,加速應用部署。
背景信息
通義千問-7B(Qwen-7B)是阿里云研發的通義千問大模型系列的70億參數規模的模型。基于Transformer的大語言模型,在超大規模的預訓練數據上進行訓練得到了Qwen-7B。本文使用的通義千問-7B-Chat是在Qwen-7B的基礎上,使用對齊機制打造了基于大語言模型的AI助手。更多信息,請參見Qwen-7B-Chat。
前提條件
您使用的VPC已綁定公網NAT網關,并配置SNAT條目允許該VPC或下屬交換機的資源可以訪問公網。
如果VPC沒有綁定公網NAT網關,您需要在創建數據緩存和部署應用時綁定EIP,以便可以拉取公網數據。
準備運行環境
硬件要求
需使用的GPU規格要求如下。ECI支持的GPU規格,請參見規格說明。
CPU:無嚴格限制
內存:>16 GiB
GPU:≥1
顯存:>16 GB(顯存過低可能會出現OOM)
軟件環境
通義千問-7B-Chat依賴的庫和配置較多,ECI已經制作好了一個公共容器鏡像,包含了一個基于Gradio的WebUI,您可以直接使用該鏡像或者將其作為基礎鏡像進行二次開發。鏡像地址為registry.cn-hangzhou.aliyuncs.com/eci_open/qwen-webui:1.0.0,大小約為15 GB。
操作步驟
創建數據緩存
控制臺
訪問ModelScope,獲取模型ID。
本示例使用通義千問-7B-Chat模型的v1.1.4版本。在ModelScope找到目標模型后,在模型詳情頁面頂部可以復制模型ID。
登錄彈性容器實例控制臺。
在頂部菜單欄左上角處選擇地域。
在左側導航欄,單擊數據緩存。
創建通義千問-7B-Chat的數據緩存。
單擊創建數據緩存。
完成數據緩存參數配置。
本文使用的參數示例如下,其中緩存數據源為拉取通義千問-7B-Chat模型的固定配置,其他參數可自定義配置,更多信息,請參見創建數據緩存。
配置項
示例值
緩存所屬Bucket
test
緩存所屬目錄
/model/qwen/
緩存名
qwen
緩存大小
20 GiB
緩存數據源
類型:URL
參數
repoSource:ModelScope/Model
repoId:qwen/Qwen-7B-Chat
revision:v1.1.4
單擊確定。
查看數據緩存狀態。
在數據緩存頁面刷新查看數據緩存狀態,當狀態為Available時,表示可以使用該數據緩存。
OpenAPI
訪問ModelScope,獲取模型ID。
本示例使用通義千問-7B-Chat模型的v1.1.4版本。在ModelScope找到目標模型后,在模型詳情頁面頂部可以復制模型ID。
創建通義千問-7B-Chat的數據緩存。
調用CreateDataCache接口創建數據緩存所采用的參數示例如下,表示從ModelScope拉取指定模型數據,保存到名為test的Bucket的
/model/qwen/
目錄。數據緩存名為qwen,保留時長為1天。重要如果您通過SDK創建數據緩存,DataSource.Options中的各個參數前無需添加參數名的長度,例如
#10#repoSource
直接寫成repoSource
,#6#repoId
直接寫成repoId
即可。{ "RegionId": "cn-beijing", "SecurityGroupId": "sg-2ze7l1o0ql1cbk******", "VSwitchId": "vsw-2ze23nqzig8inpr******", "Bucket": "test", "Path": "/model/qwen/", "Name": "qwen", "DataSource": { "Type": "URL", "Options": { "#6#repoId": "qwen/Qwen-7B-Chat", "#10#repoSource": "ModelScope/Model" "#8#revision": "v1.1.4" } }, "RetentionDays": 1 }
查詢數據緩存狀態。
根據返回的數據緩存ID調用DescribeDataCaches接口查詢數據緩存信息,當數據緩存的狀態(DataCaches.Status)為Available時,表示可以使用該數據緩存。
部署通義千問應用
控制臺
在彈性容器實例控制臺的容器組頁面,單擊創建彈性容器組。
填寫實例相關配置信息,然后單擊配置確認。
本文使用的參數示例如下,實例使用GPU規格,并掛載了通義千問模型。實例內容器使用包含通義千問WebUI應用的鏡像,容器啟動后會運行
python Qwen-7B/web_demo.py --server_port 8888
啟動WebUI。重要當VPC已綁定公網NAT網關時,創建ECI實例時可以不綁定EIP。在實例創建完成后,您可以配置DNAT條目實現外部訪問ECI實例。
配置區域
配置項
示例值
容器組配置
指定規格
ecs.gn6i-c16g1.4xlarge
名稱
qwen-web
容器配置
容器名稱
qwen
鏡像
鏡像:registry.cn-hangzhou.aliyuncs.com/eci_open/qwen-webui
版本:1.0.0
可執行命令
/bin/sh
參數
-c
python Qwen-7B/web_demo.py --server_port 8888
數據緩存
緩存Bucket
test
單擊添加,掛載通義千問-7B-Chat的數據緩存
緩存目錄:/model/qwen/
目標容器:qwen
容器掛載目錄:/data/model/
開啟Burst
開啟
彈性公網IP
彈性公網IP
自動創建
帶寬峰值:5 Mbps
確認實例配置信息,閱讀并選中服務協議,單擊確認訂單。
返回容器組頁面,確認應用部署狀態并查看實例的EIP地址。
在容器組頁面可以查看實例狀態,單擊實例ID進入實例詳情頁可以查看容器狀態。當實例狀態和容器狀態均為運行中時,表示應用部署成功。您可以在IP地址列獲取實例的EIP地址。
OpenAPI
使用數據緩存創建ECI實例,部署通義千問應用。
調用CreateContainerGroup接口創建ECI實例所采用的參數示例如下,該實例使用GPU規格,并掛載了通義千問模型。實例內容器使用包含通義千問WebUI應用的鏡像,容器啟動后會運行
python Qwen-7B/web_demo.py --server_port 8888
啟動WebUI。說明以下示例中,系統會自動創建并為ECI實例綁定一個EIP。當VPC已綁定公網NAT網關時,創建ECI實例時可以不綁定EIP。在實例創建完成后,您可以配置DNAT條目實現外部訪問ECI實例。
{ "RegionId": "cn-beijing", "SecurityGroupId": "sg-2ze7l1o0ql1cbk******", "VSwitchId": "vsw-2ze23nqzig8inpr******", "ContainerGroupName": "qwen-web", "InstanceType": "ecs.gn6i-c16g1.4xlarge", "DataCacheBucket": "test", "Container": [ { "Arg": [ "-c", "python Qwen-7B/web_demo.py --server_port 8888" ], "Command": [ "/bin/sh" ], "Gpu": 1, "Name": "qwen", "Image": "registry.cn-hangzhou.aliyuncs.com/eci_open/qwen-webui:1.0.0", "VolumeMount": [ { "Name": "model-qwen", "MountPath": "/data/model" } ] } ], "Volume": [ { "Type": "HostPathVolume", "HostPathVolume.Path": "/model/qwen/", "Name": "model-qwen" } ], "DataCacheProvisionedIops": 35000, "DataCacheBurstingEnabled": true, "AutoCreateEip": true }
確認應用部署狀態。
根據返回的實例ID調用DescribeContainerGroupStatus查詢實例和容器狀態。當實例狀態(Status)和容器狀態(ContainerStatuses.State)為Running,表示實例已經創建成功,容器正在運行。
查詢實例的EIP地址。
根據返回的實例ID調用DescribeContainerGroups查詢實例詳情,在InternetIp中可以獲取實例的EIP地址。
測試模型效果
在ECI實例所屬安全組中添加入方向規則,開放8888端口。
打開瀏覽器,訪問通義千問的Web頁面。
本文示例的通義千問應用已單獨綁定了EIP,可以直接輸入實例的EIP地址和容器開放的端口進行訪問,例如
123.57.XX.XX:8888
。輸入文本,測試通義千問-7B-Chat的模型效果。
示例如下: