前言
近期,Meta 宣布大語言模型 Llama2 開源,包含7B、13B、70B不同尺寸,分別對應(yīng)70億、130億、700億參數(shù)量,并在每個規(guī)格下都有專門適配對話場景的優(yōu)化模型Llama-2-Chat。Llama2 可免費用于研究場景和商業(yè)用途(但月活超過7億以上的企業(yè)需要申請),對企業(yè)和開發(fā)者來說,提供了大模型研究的最新利器。
目前,Llama-2-Chat在大多數(shù)評測指標(biāo)上超過了其他開源對話模型,并和一些熱門閉源模型(ChatGPT、PaLM)相差不大。阿里云機(jī)器學(xué)習(xí)平臺PAI第一時間針對 Llama2 系列模型進(jìn)行適配,推出全量微調(diào)、Lora微調(diào)、推理服務(wù)等場景最佳實踐,助力AI開發(fā)者快速開箱。以下我們將分別展示具體使用步驟。
最佳實踐一:Llama 2 低代碼 Lora 微調(diào)及部署
l 本實踐將采用阿里云機(jī)器學(xué)習(xí)平臺PAI-快速開始模塊針對 Llama-2-7b-chat 進(jìn)行開發(fā)。PAI-快速開始支持基于開源模型的低代碼訓(xùn)練、布署和推理全流程,適合想要快速開箱體驗預(yù)訓(xùn)練模型的開發(fā)者。
一、準(zhǔn)備工作
1、進(jìn)入PAI-快速開始頁面
a. 登入PAI控制臺 https://pai.console.aliyun.com/
b. 進(jìn)入PAI工作空間,并在左側(cè)導(dǎo)航欄中找到“快速開始”。

2、選擇Llama2模型
PAI-快速開始包含了不同來源的許多熱門開源模型,來支持星空人工智能的不同領(lǐng)域和任務(wù)。在本次實例中,請選擇“生成式AI-大語言模型(large-language-model)”,進(jìn)入模型列表頁。

在模型列表頁中您可以看到多個來自不同開源社區(qū)的主流模型。在本次展示中,我們將使用llama-2-7b-chat-hf模型(llama-2-7b-hf模型同理)。您也可以自由選擇其他適合您當(dāng)前業(yè)務(wù)需求的模型。
Tips:
· 一般來說,參數(shù)量越大的模型效果會更好,但相對應(yīng)的模型運行時產(chǎn)生的費用和微調(diào)訓(xùn)練所需要的數(shù)據(jù)量都會更多。
· Llama-2-13B和70B的版本,以及其他開源大語言模型也將后續(xù)在PAI-快速開始上線,敬請期待。

二、模型在線推理
快速開始提供的llama-2-7b-chat-hf來源于HuggingFace提供的Llama-2-7b-chat模型,它也是主要基于Transformer架構(gòu)的大語言模型,使用多種混合的開源數(shù)據(jù)集進(jìn)行訓(xùn)練,因此適合用于絕大多數(shù)的英文非專業(yè)領(lǐng)域場景。我們可以通過PAI快速開始將此模型直接部署到PAI-EAS,創(chuàng)建一個推理服務(wù)。
1、部署模型
通過模型詳情頁面的的部署入口您可以一鍵創(chuàng)建一個基于此模型的在線推理服務(wù),所有的參數(shù)已經(jīng)幫您默認(rèn)配置完畢。當(dāng)然,您也可以自由選擇所使用的計算資源和其他設(shè)置,我們即可以將該模型直接部署到PAI-EAS創(chuàng)建推理服務(wù)。
請注意,模型需要至少64GiB內(nèi)存和24GiB及以上的顯存,請確保您選擇的計算資源滿足以上要求,否則部署可能失敗。

通過服務(wù)詳情頁,您可以查看推理服務(wù)的部署狀態(tài)。當(dāng)服務(wù)狀態(tài)為“運行中”時,表示推理服務(wù)已經(jīng)部署成功。

Tips:
· 后續(xù)您可以隨時在PAI-快速開始中點擊“管理任務(wù)與部署”按鈕來回到當(dāng)前的推理服務(wù)。
2、調(diào)用推理服務(wù)
在部署成功之后,您即可通過WebUI的方式來最快速度調(diào)試您的服務(wù),發(fā)送預(yù)測請求。


在WebUI中也同時支持了API調(diào)用能力,相關(guān)文檔可以在WebUI頁底點擊“Use via API”查看。
三、模型微調(diào)訓(xùn)練
llama-2-7b-chat-hf模型適用于絕大多數(shù)非專業(yè)的場景。當(dāng)您需要應(yīng)用特定領(lǐng)域的專業(yè)知識時,您可以選擇使用模型的微調(diào)訓(xùn)練來幫助模型在自定義領(lǐng)域的能力。
Tips:
· 大語言模型也可以在對話過程中直接學(xué)習(xí)到比較簡單的知識,請根據(jù)自己的需求選擇是否訓(xùn)練。
· 當(dāng)前快速開始支持的訓(xùn)練方式基于LoRA。LoRA訓(xùn)練相較于其他訓(xùn)練方式(如SFT等)會顯著降低訓(xùn)練成本和時間,但大語言模型的LoRA訓(xùn)練效果可能不穩(wěn)定。
1、準(zhǔn)備數(shù)據(jù)
Tips:
· 為方便您試用體驗Llama 2模型,我們在 llama-2-7b-chat-hf的模型卡片中也已經(jīng)幫您準(zhǔn)備了一份默認(rèn)用于Instruction Tuning的數(shù)據(jù)集來直接進(jìn)行微調(diào)訓(xùn)練。
模型支持使用OSS上的數(shù)據(jù)進(jìn)行訓(xùn)練。訓(xùn)練數(shù)據(jù)接受Json格式輸入,每條數(shù)據(jù)由問題、答案、id組成,分別用"instruction"、"output"和"id"字段表示,例如:
[
{
"instruction": "以下文本是否屬于世界主題?為什么美國人很少舉行閱兵?",
"output": "是",
"id": 0
},
{
"instruction": "以下文本是否屬于世界主題?重磅!事業(yè)單位車改時間表已出!",
"output": "不是",
"id": 1
}
]
訓(xùn)練數(shù)據(jù)的具體格式也可以在PAI-快速開始的具體模型介紹頁中查閱。
關(guān)于如何上傳數(shù)據(jù)到OSS,以及查看相應(yīng)的數(shù)據(jù),請參考OSS的幫助文檔:https://help.aliyun.com/document_detail/31883.html?spm=a2c4g.31848.0.0.71102cb7dsCgz2
為了更好的驗證模型訓(xùn)練的效果,除了提供訓(xùn)練數(shù)據(jù)集之外,也推薦您準(zhǔn)備一份驗證數(shù)據(jù)集:它將會用于在訓(xùn)練中評估模型訓(xùn)練的效果,以及訓(xùn)練的參數(shù)優(yōu)化調(diào)整。
2、提交訓(xùn)練作業(yè)
在準(zhǔn)備好使用的數(shù)據(jù)集之后,您即可以在快速開始的模型頁面配置訓(xùn)練使用的數(shù)據(jù)集、提交訓(xùn)練作業(yè)。我們已經(jīng)默認(rèn)配置了優(yōu)化過的超參數(shù)和訓(xùn)練作業(yè)使用的計算資源配置,您也可以根據(jù)自己的實際業(yè)務(wù)修改。
通過訓(xùn)練作業(yè)詳情頁,您可以查看訓(xùn)練任務(wù)的執(zhí)行進(jìn)度、任務(wù)日志、以及模型的評估信息。當(dāng)訓(xùn)練任務(wù)的狀態(tài)為“成功”,訓(xùn)練作業(yè)產(chǎn)出的模型會被保存到OSS上(見作業(yè)詳情頁的“模型輸出路徑”)。
Tips:
· 使用默認(rèn)數(shù)據(jù)集和默認(rèn)超參數(shù)、計算資源訓(xùn)練大概預(yù)計的完成時間在1小時30分鐘左右。如果使用自定義訓(xùn)練數(shù)據(jù)和配置項,預(yù)計的訓(xùn)練完成時間可能有所差異,但通常應(yīng)該在數(shù)小時后完成。
· 如果中途關(guān)閉了頁面,您可以隨時在PAI-快速開始中點擊“管理任務(wù)與部署”按鈕來回到當(dāng)前的訓(xùn)練任務(wù)。

3、部署微調(diào)模型
當(dāng)微調(diào)訓(xùn)練成功之后,用戶可以直接在作業(yè)詳情頁將獲得的模型部署為推理服務(wù)。具體的模型部署和服務(wù)調(diào)用流程請參照以上的“直接部署模型”的文檔。

最佳實踐二:Llama2 全參數(shù)微調(diào)訓(xùn)練
l 本實踐將采用阿里云機(jī)器學(xué)習(xí)平臺PAI-DSW模塊針對 Llama-2-7B-Chat 進(jìn)行全參數(shù)微調(diào)。PAI-DSW是交互式建模平臺,該實踐適合需要定制化微調(diào)模型,并追求模型調(diào)優(yōu)效果的開發(fā)者。
一、運行環(huán)境要求
Python環(huán)境3.9以上,GPU推薦使用A100(80GB),該資源比較緊俏,建議多刷新幾次。
二、準(zhǔn)備工作
1、登入PAI并下載 Llama-2-7B-Chat
a. 登入PAI控制臺 https://pai.console.aliyun.com/
b. 進(jìn)入 PAI-DSW 創(chuàng)建實例后下載模型文件。運行如下代碼,可以自動為您選擇合適的下載地址,并將模型下載到當(dāng)前目錄。
import os
dsw_region = os.environ.get("dsw_region")
url_link = {
"cn-shanghai": "https://atp-modelzoo-sh.oss-cn-shanghai-internal.aliyuncs.com/release/tutorials/llama2/llama2-7b.tar.gz",
"cn-hangzhou": "https://atp-modelzoo.oss-cn-hangzhou-internal.aliyuncs.com/release/tutorials/llama2/llama2-7b.tar.gz",
"cn-shenzhen": "https://atp-modelzoo-sz.oss-cn-shenzhen-internal.aliyuncs.com/release/tutorials/llama2/llama2-7b.tar.gz",
"cn-beijing": "https://atp-modelzoo-bj.oss-cn-beijing-internal.aliyuncs.com/release/tutorials/llama2/llama2-7b.tar.gz",
}
path = url_link[dsw_region]
os.environ['LINK_CHAT'] = path
!wget $LINK_CHAT
!tar -zxvf llama2-7b.tar.gz
如果您的地區(qū)不在上述地區(qū)中,您可以自行選擇與你地域最近的鏈接進(jìn)行下載(不同地域不共享內(nèi)網(wǎng),記得將鏈接中的-internal去掉)。同一地域的數(shù)據(jù)下載速度快,不同地域之間也可以下載,但是速度比同一地域略慢。
如果您希望從ModelScope下載模型,請點擊鏈接:https://modelscope.cn/models/modelscope/Llama-2-7b-chat-ms/summary
2、下載和安裝環(huán)境
接著下載和安裝所需要的環(huán)境。
· ColossalAI是大規(guī)模并行AI訓(xùn)練系統(tǒng),在本例中我們使用該框架進(jìn)行模型微調(diào)。
· transformers是基于transformers模型結(jié)構(gòu)的預(yù)訓(xùn)練語言庫。
· gradio是一個快速構(gòu)建機(jī)器學(xué)習(xí)Web展示頁面的開源庫。
! wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/llama2/ColossalAI.tar.gz
! tar -zxvf ColossalAI.tar.gz
! pip install ColossalAI/.
! pip install ColossalAI/applications/Chat/.
! pip install transformers==4.30.0
! pip install gradio==3.11
3、下載示例訓(xùn)練數(shù)據(jù)
下載訓(xùn)練所需的數(shù)據(jù),這里我們提供的一份創(chuàng)意生成數(shù)據(jù),包括發(fā)言稿生成等內(nèi)容。
您也可以參考該格式,自行準(zhǔn)備所需數(shù)據(jù)。
! wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/llama2/llama_data.json
! wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/llama2/llama_test.json
三、微調(diào)模型
您可以使用已經(jīng)寫好的訓(xùn)練腳本,進(jìn)行模型訓(xùn)練。
! sh ColossalAI/applications/Chat/examples/train_sft.sh
四、試玩模型
模型訓(xùn)練完成后,下載我們提供的webUI demo,試玩微調(diào)完成的模型(注意模型地址替換為自己訓(xùn)練好的模型地址)。
import gradio as gr
import requests
import json
from transformers import AutoTokenizer, AutoModelForCausalLM
#模型地址替換為自己訓(xùn)練好的模型地址
tokenizer = AutoTokenizer.from_pretrained("/mnt/workspace/sft_llama2-7b",trust_remote_code=True)
#模型地址替換為自己訓(xùn)練好的模型地址
model = AutoModelForCausalLM.from_pretrained("/mnt/workspace/sft_llama2-7b",trust_remote_code=True).eval().half().cuda()
def inference(text):
from transformers import pipeline
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer,device='cuda:0', max_new_tokens=400)
res=pipe(text)
return res[0]['generated_text'][len(text):]
demo = gr.Blocks()
with demo:
input_prompt = gr.Textbox(label="請輸入需求", value="請以軟件工程師的身份,寫一篇入職的發(fā)言稿。", lines=6)
generated_txt = gr.Textbox(lines=6)
b1 = gr.Button("發(fā)送")
b1.click(inference, inputs=[input_prompt], outputs=generated_txt)
demo.launch(enable_queue=True, share=True)
五、模型上傳至OSS并在線部署
如果希望將上述模型部署至PAI-EAS,您需要首先將訓(xùn)練完成的模型上傳至OSS。
下列參數(shù)需要根據(jù)您自己的信息填寫
# encoding=utf-8
import oss2
import os
AK='yourAccessKeyId'
SK='yourAccessKeySecret'
endpoint = 'yourEndpoint'
dir='your model output dir'
auth = oss2.Auth(AK, SK)
bucket = oss2.Bucket(auth, endpoint, 'examplebucket')
for filename in os.listdir(dir):
current_file_path = dir+filename
file_path = '需要上傳地址'
bucket.put_object_from_file(file_path, current_file_path)
接下來進(jìn)行部署工作,步驟請參考【最佳實踐三:Llama2 快速部署 WebUI】
最佳實踐三:Llama2 快速部署 WebUI
l 本實踐將采用阿里云機(jī)器學(xué)習(xí)平臺PAI-EAS 模塊針對 Llama-2-13B-chat 進(jìn)行部署。PAI-EAS是模型在線服務(wù)平臺,支持將模型一鍵部署為在線推理服務(wù)或AI-Web應(yīng)用,具備彈性擴(kuò)縮的特點,適合需求高性價比模型服務(wù)的開發(fā)者。
一、服務(wù)部署
1、 進(jìn)入PAI-EAS模型在線服務(wù)頁面。
a.登錄PAI控制臺 https://pai.console.aliyun.com/
b.在左側(cè)導(dǎo)航欄單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進(jìn)入對應(yīng)工作空間內(nèi)。
c.在工作空間頁面的左側(cè)導(dǎo)航欄選擇模型部署>模型在線服務(wù)(EAS),進(jìn)入PAI EAS模型在線服務(wù)頁面。

2、在PAI EAS模型在線服務(wù)頁面,單擊部署服務(wù)。
3、在部署服務(wù)頁面,配置以下關(guān)鍵參數(shù)。
參數(shù)
描述
服務(wù)名稱
自定義服務(wù)名稱。本案例使用的示例值為:chatllm_llama2_13b。
部署方式
選擇鏡像部署AI-Web應(yīng)用。
鏡像選擇
在PAI平臺鏡像列表中選擇chat-llm-webui,鏡像版本選擇1.0。
由于版本迭代迅速,部署時鏡像版本選擇最高版本即可。
運行命令
服務(wù)運行命令:
· 如果使用13b的模型進(jìn)行部署:python webui/webui_server.py --listen --port=8000 --model-path=meta-llama/Llama-2-13b-chat-hf --precision=fp16
· 如果使用7b的模型進(jìn)行部署:python webui/webui_server.py --listen --port=8000 --model-path=meta-llama/Llama-2-7b-chat-hf
端口號輸入:8000
資源組種類
選擇公共資源組。
資源配置方法
選擇常規(guī)資源配置。
資源配置選擇
必須選擇GPU類型,實例規(guī)格推薦使用ecs.gn6e-c12g1.3xlarge。
13b的模型務(wù)必跑在gn6e及更高規(guī)格的機(jī)型上。
7b的模型可以跑在A10/GU30機(jī)型上。
額外系統(tǒng)盤
選擇50GB

4、單擊部署,等待一段時間即可完成模型部署。
二、啟動WebUI進(jìn)行模型推理
1、單擊目標(biāo)服務(wù)的服務(wù)方式列下的查看Web應(yīng)用。

2、在WebUI頁面,進(jìn)行模型推理驗證。
在對話框下方的輸入界面輸入對話內(nèi)容,例如”請?zhí)峁┮粋€理財學(xué)習(xí)計劃”,點擊發(fā)送,即可開始對話。

What's More
1.本文主要展示了基于阿里云機(jī)器學(xué)習(xí)平臺PAI快速進(jìn)行Llama2微調(diào)及部署工作的實踐,主要是面向7B和13B尺寸的。后續(xù),我們將展示如何基于PAI進(jìn)行70B尺寸的 Llama-2-70B 的微調(diào)及部署工作,敬請期待。
2.上述實驗中,【最佳實踐三:Llama2 快速部署 WebUI】支持免費試用機(jī)型運行,歡迎點擊【閱讀原文】前往阿里云使用中心領(lǐng)取“PAI-EAS”免費試用后前往PAI控制臺體驗。
參考資料:
1. Llama2: Inside the Model https://ai.meta.com/llama/#inside-the-model
2. Llama 2 Community License Agreement https://ai.meta.com/resources/models-and-libraries/llama-downloads/
3. HuggingFace Open LLM Leaderboard https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard
4. 阿里云機(jī)器學(xué)習(xí)平臺PAI:https://www.aliyun.com/product/bigdata/learn
特別提示您 Llama2 屬于國外公司開發(fā)的限制性開源模型,請您務(wù)必在使用前仔細(xì)閱讀并遵守 Llama2 的許可協(xié)議,尤其是其限制性許可條款(如月活超過7億以上的企業(yè)需申請額外許可)和免責(zé)條款等。
此外提醒您務(wù)必遵守適用國家的法律法規(guī),若您利用 Llama2 向中國境內(nèi)公眾提供服務(wù),請遵守國家的各項法律法規(guī)要求,尤其不得從事或生成危害國家、社會、他人權(quán)益等行為和內(nèi)容。
星空人工智能技術(shù)網(wǎng) 倡導(dǎo)尊重與保護(hù)知識產(chǎn)權(quán)。如發(fā)現(xiàn)本站文章存在版權(quán)等問題,煩請30天內(nèi)提供版權(quán)疑問、身份證明、版權(quán)證明、聯(lián)系方式等發(fā)郵件至1851688011@qq.com我們將及時溝通與處理。?。?a href="/">首頁 > 新聞 » 快速玩轉(zhuǎn) Llama2!阿里云機(jī)器學(xué)習(xí) PAI 推出最佳實踐