本文以搭建Alpaca-LoRa為例,示範如何使用資料緩衝。通過資料緩衝提前拉取llama-7b-hf模型資料和alpaca-lora-7b權重資料,然後在建立Alpaca-LoRa應用執行個體時直接掛載模型和權重資料,可以免去在執行個體中拉取資料的等待時間,加速Apache-LoRa啟動過程。
背景資訊
Alpaca-LoRa是一種使用Lora技術在LLaMA模型進行微調的輕量級語言模型。它可以類比自然語言進行對話互動,根據使用者輸入的指令來產生不同的文本,協助使用者完成寫作、翻譯、編寫代碼等任務。
阿里雲不對第三方模型的合法性、安全性、準確性進行任何保證,阿里雲不對由此引發的任何損害承擔責任。
您應自覺遵守第三方模型的使用者協議、使用規範和相關法律法規,並就使用第三方模型的合法性、合規性自行承擔相關責任。
前提條件
您使用的VPC已綁定公網NAT Gateway,並配置SNAT條目允許該VPC或下屬交換器的資源可以訪問公網。
如果VPC沒有綁定公網NAT Gateway,您需要在建立資料緩衝和部署應用時綁定EIP,以便可以拉取公網資料。
操作步驟
製作Alpaca-LoRa鏡像
請根據自身業務需求,參考以下步驟製作鏡像。
訪問alpaca-lora,將倉庫複製到本地。
修改倉庫中的requirements.txt和Dockerfile。
使用Dockerfile構建鏡像。
將鏡像推送到鏡像倉庫中。
建立資料緩衝
訪問HuggingFace,擷取模型ID。
本文使用以下兩個模型,在HuggingFace找到目標模型後,在模型詳情頁面頂部可以複製模型ID。
decapoda-research/llama-7b-hf
tloen/alpaca-lora-7b
建立資料緩衝。
建立llama-7b-hf的資料緩衝。
調用CreateDataCache介面建立資料緩衝所採用的參數樣本如下,表示從HuggingFace拉取llama-7b-hf模型資料,儲存到名為test的Bucket的
/model/llama-7b-hf目錄。資料緩衝名為llama-7b-hf,保留時間長度為1天。重要如果您通過SDK建立資料緩衝,DataSource.Options中的各個參數前無需添加參數名的長度,例如
#10#repoSource直接寫成repoSource,#6#repoId直接寫成repoId即可。{ "RegionId": "cn-beijing", "SecurityGroupId": "sg-2ze63v3jtm8e6syi****", "VSwitchId": "vsw-2ze94pjtfuj9vaymf****", "Bucket": "test", "Path": "/model/llama-7b-hf", "Name": "llama-7b-hf", "DataSource": { "Type": "URL", "Options": { "#10#repoSource": "HuggingFace/Model", "#6#repoId": "decapoda-research/llama-7b-hf" } }, "RetentionDays": 1 }建立alpaca-lora-7b的資料緩衝。
調用CreateDataCache介面建立資料緩衝所採用的參數樣本如下,表示從HuggingFace拉取alpaca-lora-7b模型資料,儲存到名為test的Bucket的
/model/alpaca-lora-7b目錄。資料緩衝名為alpaca-lora-7b,保留時間長度為1天。重要如果您通過SDK建立資料緩衝,DataSource.Options中的各個參數前無需添加參數名的長度,例如
#10#repoSource直接寫成repoSource,#6#repoId直接寫成repoId即可。{ "RegionId": "cn-beijing", "SecurityGroupId": "sg-2ze63v3jtm8e6syi****", "VSwitchId": "vsw-2ze94pjtfuj9vaymf****", "Bucket": "test", "Path": "/model/alpaca-lora-7b", "Name": "alpaca-lora-7b", "DataSource": { "Type": "URL", "Options": { "#10#repoSource": "HuggingFace/Model", "#6#repoId": "tloen/alpaca-lora-7b" } }, "RetentionDays": 1 }
查詢資料緩衝狀態。
根據返回的資料緩衝ID調用DescribeDataCaches介面查詢資料緩衝資訊,當資料緩衝的狀態(DataCaches.Status)為Available時,表示可以使用該資料緩衝。
部署Alpaca-lora應用
使用資料緩衝建立ECI執行個體,部署Alpaca-lora應用。
調用CreateContainerGroup介面建立ECI執行個體所採用的參數樣本如下,該ECI執行個體增加了20 GiB的臨時儲存空間,並掛載了llama-7b-hf和alpaca-lora-7b模型資料。執行個體內的容器使用準備好的Alpaca-lora鏡像,模型資料在容器內的掛載路徑分別為
/data/llama-7b-hf和/data/alpaca-lora-7b,容器啟動後會運行python3.10 generate.py --load_8bit --base_model /data/llama-7b-hf --lora_weights /data/alpaca-lora-7b。{ "RegionId": "cn-beijing", "SecurityGroupId": "sg-2ze63v3jtm8e6syi****", "VSwitchId": "vsw-2ze94pjtfuj9vaymf****", "ContainerGroupName": "alpacalora", "DataCacheBucket": "test", "EphemeralStorage": 20, "Container": [ { "Name": "alpacalora", "Image": "registry-vpc.cn-beijing.aliyuncs.com/******/***-registry:v1.0", "Command": [ "/bin/sh", "-c" ], "Arg": [ "python3.10 generate.py --load_8bit --base_model /data/llama-7b-hf --lora_weights /data/alpaca-lora-7b" ], "Cpu": 16, "Memory": 64, "Port": [ { "Port": 7860, "Protocol": "TCP" } ], "VolumeMount": [ { "Name": "llama-model", "MountPath": "/data/llama-7b-hf" }, { "MountPath": "/data/alpaca-lora-7b", "Name": "alpacalora-weight" } ] } ], "Volume": [ { "Type": "HostPathVolume", "HostPathVolume.Path": "/model/llama-7b-hf", "Name": "llama-model" }, { "Type": "HostPathVolume", "HostPathVolume.Path": "/model/alpaca-lora-7b", "Name": "alpacalora-weight" } ] }確認應用部署狀態。
根據返回的執行個體ID調用DescribeContainerGroupStatus查詢執行個體和容器狀態。當執行個體狀態(Status)和容器狀態(ContainerStatuses.State)為Running,表示執行個體已經建立成功,容器正在運行。
對外開放應用。
在ECI執行個體所屬VPC已綁定NAT Gateway的前提下,您需要建立DNAT條目,使得ECI執行個體可以對外提供公網訪問服務。具體操作,請參見建立和管理DNAT條目。
說明如果VPC沒有綁定NAT Gateway,則需要您在建立ECI執行個體時為其綁定一個EIP,此時可以跳過本步驟。
建立DNAT條目採用的配置項樣本如下:
公網IP地址:選擇NAT Gateway綁定的EIP地址。
私網IP地址:選擇部署了Alpaca-lora應用的ECI執行個體。
連接埠設定:使用具體連接埠,公網連接埠配置為80,私網連接埠配置為7860,協議為TCP。
測試模型效果
在ECI執行個體所屬安全性群組中添加入方向規則,開放應用對外連接埠。
開啟瀏覽器,訪問Alpaca-lora應用。
在配置了DNAT的情況下,請輸入DNAT條目中配置的公網IP地址和公網連接埠,例如
47.94.XX.XX:80。說明如果ECI執行個體單獨綁定了EIP,請輸入EIP地址和容器開放的連接埠,例如
47.94.XX.XX:7860。輸入文本,測試模型。
樣本如下:
