快速玩轉 Llama2!機器學習 PAI 最佳實踐(二)—全參數微調訓練

前言

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

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

最佳實踐: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 創建實例後下載模型文件。運行如下代碼,可以自動爲您選擇合適的下載地址,並將模型下載到當前目錄。

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

如果您的地區不在上述地區中,您可以自行選擇與你地域最近的鏈接進行下載(不同地域不共享內網,記得將鏈接中的-internal去掉)。同一地域的數據下載速度快,不同地域之間也可以下載,但是速度比同一地域略慢。

如果您希望從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】

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
點擊立即免費試用雲產品 開啓雲上實踐之旅!

原文鏈接

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

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