日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Llama2-7B基于DSW的全參數微調訓練

本方案使用阿里云DSW對Llama-2-7B-Chat模型進行全參數微調。DSW是一款交互式建模平臺,適合需要定制化微調模型并追求優化效果的開發者。

準備環境和資源

  • 創建工作空間,詳情請參見創建工作空間。

  • 創建DSW實例,其中關鍵參數配置如下。具體操作,請參見創建DSW實例。

    • 實例規格選擇:推薦使用GU100。本方案選擇:ecs.gn7e-c16g1.4xlarge。

    • 鏡像選擇:建議使用Python3.9及以上版本。本方案在官方鏡像中選擇pytorch:1.12-gpu-py39-cu113-ubuntu20.04。

  • 創建OSS Bucket存儲空間和目錄,用來存放訓練獲得的模型文件。具體操作,請參見控制臺創建存儲空間管理目錄。

步驟一:準備Llama-2-7B-Chat模型

  1. 進入DSW開發環境。

    1. 登錄PAI控制臺

    2. 在頁面左上方,選擇DSW實例所在的地域。

    3. 在左側導航欄單擊工作空間列表,在工作空間列表頁面中單擊默認工作空間名稱,進入對應工作空間內。

    4. 在左側導航欄,選擇模型開發與訓練>交互式建模(DSW)

    5. 單擊需要打開的實例操作列下的打開,進入DSW實例開發環境。

  2. Launcher頁面中,單擊快速開始區域Notebook下的Python3

  3. 在Notebook中執行以下代碼下載模型文件。代碼會自動選擇適當的下載地址,并將模型文件下載至當前目錄。

    說明

    如果您所在的地域不在url_link指定的可用地域范圍內,您可以選擇與您最近的可用地域鏈接進行下載。不同的地域之間不共享內網,因此您需要將鏈接中的-internal刪除。同一個地域內的數據下載速度更快,雖然不同地域之間的數據也是可以下載的,但下載速度會相對較慢。

    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

    系統輸出如下結果。image.png

此外,您也可以在ModelScope下載Llama-2-7B-Chat模型文件,然后將其上傳到DSW開發環境中。具體操作,請參見上傳與下載數據文件。

步驟二:下載和安裝環境

DSW的Notebook中執行以下命令,即可下載并安裝微調Llama-2-7B-Chat模型所需的環境。

! 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

其中:

  • ColossalAI是大規模并行AI訓練系統。在本方案中,DSW使用該框架進行模型微調。

  • transformers是基于transformers模型結構的預訓練語言庫。

  • gradio是一個快速構建機器學習Web展示頁面的開源庫。

步驟三:下載訓練數據

DSW的Notebook中執行以下命令下載模型訓練所需的數據。在本方案中,PAI提供的是一份創意生成數據,包括發言稿生成等內容。您也可以參考該數據格式自行準備訓練數據。

! 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

步驟四:微調模型

DSW的Notebook中執行以下命令進行模型微調訓練。命令執行成功后,系統將會把訓練得到的模型文件輸出到當前目錄下的sft_llama2-7b子目錄中。

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

命令執行成功后,系統輸出如下結果:

[08/01/23 16:00:27] INFO     colossalai - colossalai - INFO:                    
                             /home/pai/lib/python3.9/site-packages/colossalai/co
                             ntext/parallel_context.py:522 set_device           
                    INFO     colossalai - colossalai - INFO: process rank 0 is  
                             bound to device 0                                  
dsw-76037-687bb6c4c-plp2k:625:625 [0] NCCL INFO Bootstrap : Using eth0:10.224.160.21<0>
dsw-76037-687bb6c4c-plp2k:625:625 [0] NCCL INFO NET/Plugin : No plugin found (libnccl-net.so), using internal implementation
......
steps:  95%|██████████████████████████████▍ | 1178/1240 [11:41<00:36,  1.69it/s][08/01/23 16:14:25] INFO     colossalai - colossalai - INFO:                    
                             /home/pai/lib/python3.9/site-packages/coati/trainer
                             /sft.py:98 _eval                                   
                    INFO     colossalai - colossalai - INFO: Eval Epoch 18/20   
                             loss 0.4501953125                                  
steps: 100%|████████████████████████████████| 1240/1240 [12:18<00:00,  1.72it/s][08/01/23 16:15:02] INFO     colossalai - colossalai - INFO:                    
                             /home/pai/lib/python3.9/site-packages/coati/trainer
                             /sft.py:98 _eval                                   
                    INFO     colossalai - colossalai - INFO: Eval Epoch 19/20   
                             loss 0.4501953125                                  
steps: 100%|████████████████████████████████| 1240/1240 [13:30<00:00,  1.53it/s]

步驟五:離線推理模型

模型訓練完成后,您可以在DSW的Notebook中執行以下命令啟動WebUI應用。在WebUI頁面試玩模型,并根據返回結果來評估模型推理效果。

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)

其中:tokenizermodel中的路徑需要替換為步驟四中訓練獲得的模型路徑。

系統返回結果如下:

說明

如果在回顯結果中出現錯誤ImportError: cannot import name 'TypeAliasType' from 'typing_extensions',您可以嘗試重新啟動Notebook并重新執行上述命令。

image.png

說明

由于http://127.0.0.1:7860為內網訪問地址,僅支持在當前的DSW實例內部通過單擊鏈接來訪問WebUI頁面,不支持通過外部瀏覽器直接訪問。

在返回結果中,單擊local URL后面的鏈接可以打開WebUI頁面。您也可以將截圖中的public URL分享于他人(您的public URL以實際為準),與他人共同在WebUI頁面測試模型效果。在WebUI頁面進行離線推理的效果示例如下:image.png

步驟六:部署模型服務

您可以參照以下操作步驟將上述訓練獲得的模型部署至EAS

  1. 步驟四中訓練獲得的模型文件上傳至OSS Bucket存儲目錄中。

    1. 在DSW中安裝ossutil并完成配置,詳情請參見安裝ossutil。

    2. 在DSW的Terminal中,在sft_llama2-7b目錄同級的目錄中執行以下命令,將模型文件上傳到OSS Bucket存儲空間。更多詳細內容,請參見命令行工具ossutil命令參考。

      ossutil64 cp -r sft_llama2-7b/ oss://examplebucket/exampledirectory/
  2. 進入模型在線服務頁面。

    1. 登錄PAI控制臺。

    2. 在左側導航欄單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應工作空間內。

    3. 在工作空間頁面的左側導航欄選擇模型部署>模型在線服務(EAS),進入模型在線服務(EAS)頁面。image

  3. 模型在線服務(EAS)頁面,單擊部署服務,在自定義模型部署區域,單擊自定義部署。

  4. 新建服務頁面,配置以下關鍵參數。

    參數

    描述

    服務名稱

    自定義服務名稱。本案例使用的示例值為:chatllm_llama2_7b。

    部署方式

    選擇鏡像部署AI-Web應用

    鏡像選擇

    PAI平臺鏡像列表中選擇chat-llm-webui,鏡像版本選擇1.0。

    說明

    由于版本迭代迅速,部署時鏡像版本選擇最高版本即可。

    填寫模型配置

    單擊填寫模型配置掛載訓練獲得的模型。

    • 模型配置選擇OSS掛載,將OSS路徑配置為模型文件所在的OSS存儲路徑。

    • 掛載路徑:配置為/llama2-finetune。

    運行命令

    服務運行命令配置如下,本方案選擇使用自定義模型配置。

    • 使用自定義模型配置為:python webui/webui_server.py --listen --port=8000 --model-path=/llama2-finetune

    • 如果使用7B的模型進行部署:python webui/webui_server.py --listen --port=8000 --model-path=meta-llama/Llama-2-7b-chat-hf

    • 如果使用13B的模型進行部署:python webui/webui_server.py --listen --port=8000 --model-path=meta-llama/Llama-2-13b-chat-hf --precision=fp16

    端口號輸入:8000

    資源組種類

    選擇公共資源組

    資源配置方法

    選擇常規資源配置。

    資源配置選擇

    本方案選擇GPU類型,實例規格推薦使用ecs.gn6e-c12g1.3xlarge。

    • 13B的模型務必使用gn6e及更高規格的機型。

    • 7B的模型可以使用A10或GU30機型。

    額外系統盤

    選擇50 GB。

    69a8e321feedb633a1d3d7ccf56bef43.png

  5. 單擊部署,大約等待5分鐘后即可完成模型部署。

步驟七:啟動WebUI進行模型推理

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

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

    在輸入文本框中輸入請求內容,例如:請以軟件工程師的身份,寫一篇入職的發言稿。,單擊Send,即可輸出結果。image.png