快速玩轉 Llama2!阿里雲機器學習 PAI 推出最佳實踐

前言

近期,Meta 宣佈大語言模型 Llama2 開源,包含7B、13B、70B不同尺寸,分別對應70億、130億、700億參數量,並在每個規格下都有專門適配對話場景的優化模型Llama-2-Chat。Llama2 可免費用於研究場景和商業用途(但月活超過7億以上的企業需要申請),對企業和開發者來說,提供了大模型研究的最新利器。

目前,Llama-2-Chat在大多數評測指標上超過了其他開源對話模型,並和一些熱門閉源模型(ChatGPT、PaLM)相差不大。阿里雲機器學習平臺PAI第一時間針對 Llama2 系列模型進行適配,推出全量微調、Lora微調、推理服務等場景最佳實踐,助力AI開發者快速開箱。以下我們將分別展示具體使用步驟。

最佳實踐一:Llama 2 低代碼 Lora 微調及部署

  • 本實踐將採用阿里雲機器學習平臺PAI-快速開始模塊針對 Llama-2-7b-chat 進行開發。PAI-快速開始支持基於開源模型的低代碼訓練、佈署和推理全流程,適合想要快速開箱體驗預訓練模型的開發者。

一、準備工作

1、進入PAI-快速開始頁面

a. 登入PAI控制檯 https://pai.console.aliyun.com/

b. 進入PAI工作空間,並在左側導航欄中找到“快速開始”。

2、選擇Llama2模型

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

在模型列表頁中您可以看到多個來自不同開源社區的主流模型。在本次展示中,我們將使用llama-2-7b-chat-hf模型(llama-2-7b-hf模型同理)。您也可以自由選擇其他適合您當前業務需求的模型。

Tips:

  • 一般來說,參數量越大的模型效果會更好,但相對應的模型運行時產生的費用和微調訓練所需要的數據量都會更多。
  • Llama-2-13B和70B的版本,以及其他開源大語言模型也將後續在PAI-快速開始上線,敬請期待。

二、模型在線推理

快速開始提供的llama-2-7b-chat-hf來源於HuggingFace提供的Llama-2-7b-chat模型,它也是主要基於Transformer架構的大語言模型,使用多種混合的開源數據集進行訓練,因此適合用於絕大多數的英文非專業領域場景。我們可以通過PAI快速開始將此模型直接部署到PAI-EAS,創建一個推理服務。

1、部署模型

通過模型詳情頁面的的部署入口您可以一鍵創建一個基於此模型的在線推理服務,所有的參數已經幫您默認配置完畢。當然,您也可以自由選擇所使用的計算資源和其他設置,我們即可以將該模型直接部署到PAI-EAS創建推理服務。

請注意,模型需要至少64GiB內存和24GiB及以上的顯存,請確保您選擇的計算資源滿足以上要求,否則部署可能失敗。

通過服務詳情頁,您可以查看推理服務的部署狀態。當服務狀態爲“運行中”時,表示推理服務已經部署成功。

Tips:

  • 後續您可以隨時在PAI-快速開始中點擊“管理任務與部署”按鈕來回到當前的推理服務。

2、調用推理服務

在部署成功之後,您即可通過WebUI的方式來最快速度調試您的服務,發送預測請求。

在WebUI中也同時支持了API調用能力,相關文檔可以在WebUI頁底點擊“Use via API”查看。

三、模型微調訓練

llama-2-7b-chat-hf模型適用於絕大多數非專業的場景。當您需要應用特定領域的專業知識時,您可以選擇使用模型的微調訓練來幫助模型在自定義領域的能力。

Tips:

  • 大語言模型也可以在對話過程中直接學習到比較簡單的知識,請根據自己的需求選擇是否訓練。
  • 當前快速開始支持的訓練方式基於LoRA。LoRA訓練相較於其他訓練方式(如SFT等)會顯著降低訓練成本和時間,但大語言模型的LoRA訓練效果可能不穩定。

1、準備數據

Tips

  • 爲方便您試用體驗Llama 2模型,我們在 llama-2-7b-chat-hf的模型卡片中也已經幫您準備了一份默認用於Instruction Tuning的數據集來直接進行微調訓練。

模型支持使用OSS上的數據進行訓練。訓練數據接受Json格式輸入,每條數據由問題、答案、id組成,分別用"instruction"、"output"和"id"字段表示,例如:

[
    {
        "instruction": "以下文本是否屬於世界主題?爲什麼美國人很少舉行閱兵?",
        "output": "是",
        "id": 0
    },
    {
        "instruction": "以下文本是否屬於世界主題?重磅!事業單位車改時間表已出!",
        "output": "不是",
        "id": 1
    }
]

訓練數據的具體格式也可以在PAI-快速開始的具體模型介紹頁中查閱。

關於如何上傳數據到OSS,以及查看相應的數據,請參考OSS的幫助文檔:https://help.aliyun.com/document_detail/31883.html?spm=a2c4g.31848.0.0.71102cb7dsCgz2

爲了更好的驗證模型訓練的效果,除了提供訓練數據集之外,也推薦您準備一份驗證數據集:它將會用於在訓練中評估模型訓練的效果,以及訓練的參數優化調整。

2、提交訓練作業

在準備好使用的數據集之後,您即可以在快速開始的模型頁面配置訓練使用的數據集、提交訓練作業。我們已經默認配置了優化過的超參數和訓練作業使用的計算資源配置,您也可以根據自己的實際業務修改。

通過訓練作業詳情頁,您可以查看訓練任務的執行進度、任務日誌、以及模型的評估信息。當訓練任務的狀態爲“成功”,訓練作業產出的模型會被保存到OSS上(見作業詳情頁的“模型輸出路徑”)。

Tips:

  • 使用默認數據集和默認超參數、計算資源訓練大概預計的完成時間在1小時30分鐘左右。如果使用自定義訓練數據和配置項,預計的訓練完成時間可能有所差異,但通常應該在數小時後完成。
  • 如果中途關閉了頁面,您可以隨時在PAI-快速開始中點擊“管理任務與部署”按鈕來回到當前的訓練任務。在WebUI中也同時支持了API調用能力,相關文檔可以在WebUI頁底點擊“Use via API”查看。

3、部署微調模型

當微調訓練成功之後,用戶可以直接在作業詳情頁將獲得的模型部署爲推理服務。具體的模型部署和服務調用流程請參照以上的“直接部署模型”的文檔。

最佳實踐二:Llama2 全參數微調訓練

  • 本實踐將採用阿里雲機器學習平臺PAI-DSW模塊針對 Llama-2-7B-Chat 進行全參數微調。PAI-DSW是交互式建模平臺,該實踐適合需要定製化微調模型,並追求模型調優效果的開發者。

一、運行環境要求

Python環境3.9以上,GPU推薦使用A100(80GB),該資源比較緊俏,建議多刷新幾次。

二、準備工作

1、登入PAI並下載 Llama-2-7B-Chat

a. 登入PAI控制檯 https://pai.console.aliyun.com/

b. 進入 PAI-DSW 創建實例後下載模型文件。

ModelScope下載模型,請點擊鏈接:https://modelscope.cn/models/modelscope/Llama-2-7b-chat-ms/summary

2、下載和安裝環境

接着下載和安裝所需要的環境。

  • ColossalAI是大規模並行AI訓練系統,在本例中我們使用該框架進行模型微調。
  • transformers是基於transformers模型結構的預訓練語言庫。
  • gradio是一個快速構建機器學習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、下載示例訓練數據

下載訓練所需的數據,這裏我們提供的一份創意生成數據,包括髮言稿生成等內容。

您也可以參考該格式,自行準備所需數據。

! 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

三、微調模型

您可以使用已經寫好的訓練腳本,進行模型訓練。

! sh ColossalAI/applications/Chat/examples/train_sft.sh

四、試玩模型

模型訓練完成後,下載我們提供的webUI demo,試玩微調完成的模型(注意模型地址替換爲自己訓練好的模型地址)。

import gradio as gr
import requests
import json
from transformers import AutoTokenizer, AutoModelForCausalLM
#模型地址替換爲自己訓練好的模型地址
tokenizer = AutoTokenizer.from_pretrained("/mnt/workspace/sft_llama2-7b",trust_remote_code=True)
#模型地址替換爲自己訓練好的模型地址
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="請以軟件工程師的身份,寫一篇入職的發言稿。", lines=6)
    generated_txt = gr.Textbox(lines=6)
    b1 = gr.Button("發送")
    b1.click(inference, inputs=[input_prompt], outputs=generated_txt) 
demo.launch(enable_queue=True, share=True)

五、模型上傳至OSS並在線部署

如果希望將上述模型部署至PAI-EAS,您需要首先將訓練完成的模型上傳至OSS。

下列參數需要根據您自己的信息填寫

# 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)

接下來進行部署工作,步驟請參考【最佳實踐三:Llama2 快速部署 WebUI】

最佳實踐三:Llama2 快速部署 WebUI

  • 本實踐將採用阿里雲機器學習平臺PAI-EAS 模塊針對 Llama-2-13B-chat 進行部署。PAI-EAS是模型在線服務平臺,支持將模型一鍵部署爲在線推理服務或AI-Web應用,具備彈性擴縮的特點,適合需求高性價比模型服務的開發者。

一、服務部署

1、進入PAI-EAS模型在線服務頁面。

    1. 登錄PAI控制檯 https://pai.console.aliyun.com/
    2. 在左側導航欄單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應工作空間內。
    3. 在工作空間頁面的左側導航欄選擇模型部署>模型在線服務(EAS),進入PAI EAS模型在線服務頁面。

2、在PAI EAS模型在線服務頁面,單擊部署服務。

3、在部署服務頁面,配置以下關鍵參數。

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

4、單擊部署,等待一段時間即可完成模型部署。

二、啓動WebUI進行模型推理

1、單擊目標服務的服務方式列下的查看Web應用。

2、在WebUI頁面,進行模型推理驗證。

在對話框下方的輸入界面輸入對話內容,例如”請提供一個理財學習計劃”,點擊發送,即可開始對話。

What's More

  1. 本文主要展示了基於阿里雲機器學習平臺PAI快速進行Llama2微調及部署工作的實踐,主要是面向7B和13B尺寸的。後續,我們將展示如何基於PAI進行70B尺寸的 Llama-2-70B 的微調及部署工作,敬請期待。
  2. 上述實驗中,【最佳實踐三:Llama2 快速部署 WebUI】支持免費試用機型運行,歡迎點擊【閱讀原文】前往阿里雲使用中心領取“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. 阿里雲機器學習平臺PAI:https://www.aliyun.com/product/bigdata/learn
※ 特別提示您 Llama2 屬於國外公司開發的限制性開源模型,請您務必在使用前仔細閱讀並遵守 Llama2 的許可協議,尤其是其限制性許可條款(如月活超過7億以上的企業需申請額外許可)和免責條款等。
此外提醒您務必遵守適用國家的法律法規,若您利用 Llama2 向中國境內公衆提供服務,請遵守國家的各項法律法規要求,尤其不得從事或生成危害國家、社會、他人權益等行爲和內容。

 

點擊立即免費試用雲產品 開啓雲上實踐之旅!

原文鏈接

本文爲阿里雲原創內容,未經允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章