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

Meta Llama3.1模型在PAI-Megatron-Patch的最佳實踐

阿里云PAI靈駿智算服務是面向大規模深度學習場景的智算產品,提供一站式的異構計算資源和AI工程化平臺。本方案將為您介紹如何使用阿里云PAI靈駿智算服務,以及基于Meta-Llama-3.1-8B的開源模型和Megatron的訓練流程,進行模型微調、離線推理驗證,并實現在線服務部署。

前提條件

本方案以Meta-Llama-3.1-8B模型為例,在開始執行操作前,請確認您已經完成以下準備工作:

  • 已開通PAI(DSW、DLC、EAS)并創建了默認的工作空間。具體操作,請參見開通PAI并創建默認工作空間。

  • 已購買靈駿智算資源并創建資源配額。具體操作,請參見新建資源組并購買靈駿智算資源靈駿智算資源配額。不同模型參數量支持的資源規格列表如下,請根據您實際使用的模型參數量選擇合適的資源,關于靈駿智算資源的節點規格詳情,請參見靈駿Serverless版機型定價詳情。

    模型參數量

    全參數訓練資源

    推理資源(最低)

    Megatron訓練模型切片

    8B

    8卡*gu7xf、8卡*gu7ef

    1*V100(32 GB顯存)、1*A10(22 GB顯存)

    TP1、PP1

    70B

    4*8卡*gu7xf、4*8卡*gu7ef

    6*V100(32 GB顯存)、2卡*gu7xf

    TP8、PP2

  • 已創建阿里云文件存儲(通用型NAS)類型的數據集,用于存儲訓練所需的文件和結果文件。默認掛載路徑配置為/mnt/data/nas。具體操作,請參見創建及管理數據集

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

    • 資源配額:選擇已創建的靈駿智算資源的資源配額。

    • 資源規格:配置以下資源規格。

      • CPU(核數):90。

      • 內存(GiB):1024。

      • 共享內存(GiB):1024。

      • GPU(卡數):至少為8。

    • 數據集:單擊添加,選擇已創建的數據集,并使用默認掛載路徑。

    • 鏡像:在鏡像地址頁簽,配置鏡像為dsw-registry.cn-wulanchabu.cr.aliyuncs.com/pai/pai-megatron-patch:24.07 。

  • 如果使用RAM用戶完成以下相關操作,需要為RAM用戶授予DSW、DLCEAS的操作權限。具體操作,請參見云產品依賴與授權:DSW、云產品依賴與授權:DLC云產品依賴與授權:EAS。

使用限制

僅支持在華北6(烏蘭察布)和新加坡地域使用該最佳實踐。

步驟一:下載模型訓練工具源代碼

  1. 進入PAI-DSW開發環境。

    1. 登錄PAI控制臺。

    2. 在頁面左上方,選擇使用服務的地域:華北6(烏蘭察布)。

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

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

    5. 單擊目標實例操作列下的打開。

  2. 在頂部菜單欄單擊Terminal,在該頁簽中單擊創建terminal

  3. Terminal中執行以下命令,下載Pai-Megatron-Patch,并安裝訓練環境所需依賴。

    cd /mnt/workspace/
    # 方式一:通過開源網站獲取訓練代碼。
    git clone --recurse-submodules https://github.com/alibaba/Pai-Megatron-Patch.git
    cd Pai-Megatron-Patch
    
    # 目前LLama3.1已支持使用FlashAttention-3加速計算,但只能在Hopper架構的GPU卡上進行運算。如果需要在H卡上使用Flash Attention-3,請在DSW上的容器中安裝上Flash Attention3并保存鏡像。
    pip install "git+https://github.com/Dao-AILab/flash-attention.git#egg=flashattn-hopper&subdirectory=hopper"
    python_path=`python -c "import site; print(site.getsitepackages()[0])"`
    mkdir -p $python_path/flashattn_hopper
    wget -P $python_path/flashattn_hopper https://raw.githubusercontent.com/Dao-AILab/flash-attention/main/hopper/flash_attn_interface.py

步驟二:準備Meta-Llama-3.1-8B模型

DSWTerminal中執行以下命令,下載Meta-Llama-3.1-8B模型。

cd /mnt/workspace
mkdir llama3-ckpts
cd llama3-ckpts
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/llama3-ckpts/Meta-Llama-3.1-8B.tgz
tar -zxf Meta-Llama-3.1-8B.tgz

步驟三:準備數據集

DSWTerminal中,執行以下命令,下載PAI已準備好的數據集。

cd /mnt/workspace
mkdir llama3-datasets
cd llama3-datasets
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/llama3-datasets/mmap_llama3_datasets_text_document.bin
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/llama3-datasets/mmap_llama3_datasets_text_document.idx

wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/llama3-datasets/alpaca_zh-llama3-train.json
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/llama3-datasets/alpaca_zh-llama3-valid.json

步驟四:Megatron-Core訓練

您可以按照以下流程進行Megatron-Core訓練。在Llama3.1中,PAI已將預訓練和微調過程整合到run_mcore_llama3_1.sh腳本,對于不同的使用場景,二者各參數的意義有所不同。

Megatron-Core模型格式轉換

Terminal中執行以下命令,使用PAI提供的模型轉換工具,可將Checkpoint無損轉換成Megatron-Core模型格式,并輸出到啟動參數(TARGET_CKPT_PATH=$3)配置的目標Checkpoint路徑中。

cd /mnt/workspace/Pai-Megatron-Patch/toolkits/model_checkpoints_convertor/llama
bash hf2mcore_convertor_llama3_1.sh \
8B \
/mnt/workspace/llama3-ckpts/Meta-Llama-3.1-8B    \
/mnt/workspace/llama3-ckpts/Meta-Llama-3.1-8B/mcore-tp4-pp2  \
4  \
2  \
false \
true \
false \
bf16

其中運行hf2mcore_convertor_llama3_1.sh腳本需要傳入的參數說明如下:

參數

描述

MODEL_SIZE=$1

設置模型參數,取值如下:

  • 8B

  • 70B

  • 405B

SOURCE_CKPT_PATH=$2

Checkpoint路徑。

TARGET_CKPT_PATH=$3

目標Checkpoint路徑。

TP=$4

模型并行度。

PP=$5

流水并行度。

mg2hf=$6

是否執行mcore2hf轉換。

CHECK=$7

測試轉換前后模型逐層輸出是否一致。

CHECK_ONLY=$8

僅檢測模型輸出,不進行轉換。

PR=$9

精度設置,取值如下:

  • fp16

  • bf16

  • fp32

HF_CKPT_PATH=$10

HFCheckpoint的路徑??蛇x,當mg2hf=true時必須提供。

Megatron-Core預訓練

先在DSW單機環境中對訓練腳本進行調試,調試完成后,您便可以在DLC環境提交多機多卡的分布式訓練任務,訓練時長取決于您設定的訓練Tokens數量。任務執行完成后,模型文件將被保存至/mnt/workspace/output_mcore_llama3_1/目錄。

DSW單機預訓練模型

Terminal中使用以下命令對Meta-Llama-3.1-8B進行預訓練,代碼示例如下。

cd /mnt/workspace/Pai-Megatron-Patch/examples/llama3_1
sh run_mcore_llama3_1.sh  \
dsw  \
8B   \
1    \
8 \
1e-5   \
1e-6   \
128  \
128  \
bf16  \
4   \
2  \
1 \
true \
true   \
true \
false \
false   \
false \
100000  \
/mnt/workspace/llama3-datasets/mmap_llama3_datasets_text_document   \
/mnt/workspace/llama3-datasets/mmap_llama3_datasets_text_document   \
/mnt/workspace/llama3-ckpts/Meta-Llama-3.1-8B/mcore-tp4-pp2  \
10000  \
100   \
/mnt/workspace/output_mcore_llama3_1

其中運行run_mcore_llama3_1.sh腳本,需要傳入的參數列表說明如下:

參數

描述

ENV=$1

配置運行環境:

  • dsw

  • dlc

MODEL_SIZE=$2

模型結構參數量級:8B、70B405B。

BATCH_SIZE=$3

一次迭代一個數據并行內的樣本數。

GLOBAL_BATCH_SIZE=$4

一次迭代多個數據并行的總樣本數。

LR=$5

學習率。

MIN_LR=$6

最小學習率。

SEQ_LEN=$7

序列長度。

PAD_LEN=$8

Padding長度。

PR=${9}

訓練精度:fp16、bf16fp8。

TP=${10}

模型并行度。

PP=${11}

流水并行度。

CP=${12}

上下文并行度。

SP=${13}

是否使用序列并行,取值如下:

  • true

  • false

DO=${14}

是否使用MegatronZero-1降顯存優化器,取值如下:

  • true

  • false

FL=${15}

是否優先使用Flash Attention,取值如下:

  • true

  • false

SFT=${16}

是否執行微調,取值如下:

  • true

  • false

AC=${17}

激活檢查點模式,取值如下:

  • sel

  • full

  • offload

  • none

    說明

    當取值為offloadfull時,可通過設置MP_AC_LAYERS環境變量,來控制CheckpointingOffloadTransformerLayer層數(默認值:1)。

OPTIMIZER_OFFLOAD=${18}

是否啟用Offload optimizer,取值如下:

  • false

  • static

  • auto

SAVE_INTERVAL=${19}

保存CheckPoint文件的間隔。

DATASET_PATH=${20}

訓練數據集路徑。

VALID_DATASET_PATH=${21}

驗證數據集路徑。

PRETRAIN_CHECKPOINT_PATH=${22}

預訓練模型路徑。

TRAIN_TOKENS=${23}

訓練TOKEN或者Iter數。

WARMUP_TOKENS=${24}

預熱TOKEN或者Iter數。

OUTPUT_BASEPATH=${25}

訓練輸出日志文件路徑。

DLC分布式預訓練模型

在單機開發調試完成后,您可以在DLC環境中配置多機多卡的分布式任務。具體操作步驟如下:

  1. 進入新建任務頁面。

    1. 登錄PAI控制臺,在頁面上方選擇目標地域,并在右側選擇目標工作空間,然后單擊進入DLC。

    2. 在分布式訓練(DLC)頁面,單擊新建任務

  2. 新建任務頁面,配置以下關鍵參數,其他參數取默認配置即可。更多詳細內容,請參見創建訓練任務。

    參數

    描述

    基本信息

    任務名稱

    自定義任務名稱。本方案配置為:test_llama3.1_dlc。

    環境信息

    節點鏡像

    選中鏡像地址并在文本框中輸入dsw-registry.cn-wulanchabu.cr.aliyuncs.com/pai/pai-megatron-patch:24.07。

    數據集

    單擊自定義數據集,并配置以下參數:

    • 自定義數據集:選擇已創建的NAS類型的數據集。

    • 掛載路徑:配置為/mnt/workspace/。

    啟動命令

    配置以下命令,其中run_mcore_llama3_1.sh腳本輸入的啟動參數與DSW單機預訓練模型一致。

    cd /mnt/workspace/Pai-Megatron-Patch/examples/llama3_1
    sh run_mcore_llama3_1.sh  \
    dlc  \
    8B   \
    1    \
    8 \
    1e-5   \
    1e-6   \
    128  \
    128  \
    bf16  \
    4   \
    2  \
    1 \
    true \
    true   \
    true \
    false \
    false   \
    false \
    100000  \
    /mnt/workspace/llama3-datasets/mmap_llama3_datasets_text_document   \
    /mnt/workspace/llama3-datasets/mmap_llama3_datasets_text_document   \
    /mnt/workspace/llama3-ckpts/Meta-Llama-3.1-8B/mcore-tp4-pp2  \
    10000  \
    100   \
    /mnt/workspace/output_mcore_llama3_1

    資源信息

    資源類型

    選擇靈駿智算。

    資源來源

    選擇資源配額

    資源配額

    本方案選擇已創建的靈駿智算資源的資源配額。

    框架

    選擇PyTorch。

    任務資源

    Worker節點配置以下參數:

    • 節點數量:2,如果需要多機訓練,配置節點數量為需要的機器數即可。

    • GPU(卡數):8

    • CPU(核數):90,且不能大于96

    • 內存(GiB):1024

    • 共享內存(GiB):1024

  3. 單擊確定,頁面自動跳轉到分布式訓練(DLC)頁面。當狀態變為已成功時,表明訓練任務執行成功。

Megatron-Core指令微調

先在DSW單機環境中對訓練腳本進行調試,調試完成后,您便可以在DLC環境提交多機多卡的分布式訓練任務,訓練時長取決于您設定的訓練迭代次數。任務執行完成后,模型文件將被保至/mnt/workspace/output_megatron_llama3/目錄。

  1. 創建用于微調的idxmap數據集,詳情請參見sft_data_preprocessing。

  2. 準備好微調數據集后,進行模型微調。

    DSW單機微調模型

    SFT開關設置為true即可進行指令微調。代碼示例如下:

    cd /mnt/workspace/Pai-Megatron-Patch/examples/llama3_1
    sh run_mcore_llama3_1.sh  \
    dsw  \
    8B   \
    1    \
    8 \
    1e-5   \
    1e-6   \
    128  \
    128  \
    bf16  \
    4   \
    2  \
    1 \
    true \
    true   \
    true \
    true \
    false   \
    false \
    100000  \
    /mnt/workspace/llama3-datasets/path_to_your_dataset   \
    /mnt/workspace/llama3-datasets/path_to_your_dataset   \
    /path/to/pretraining/checkpoint  \
    10000  \
    100   \
    /workspace/output_mcore_llama3_1

    其中運行run_mcore_llama3_1.sh腳本,需要將啟動參數DATASET_PATH=${20}、VALID_DATASET_PATH=${21}和PRETRAIN_CHECKPOINT_PATH=${22}配置的數據集和預訓練模型路徑替換為您的實際路徑,更多參數配置說明,請參見Megatron-Core預訓練。

    DLC分布式微調模型

    DSW單機環境調試完成后,您可以在DLC環境中配置多機多卡分布式任務。提交DLC訓練任務時,啟動命令配置如下,其他參數配置詳情,請參見Megatron-Core預訓練。

    cd /mnt/workspace/Pai-Megatron-Patch/examples/llama3_1
    sh run_mcore_llama3_1.sh  \
    dlc  \
    8B   \
    1    \
    8 \
    1e-5   \
    1e-6   \
    128  \
    128  \
    bf16  \
    4   \
    2  \
    1 \
    true \
    true   \
    true \
    true \
    false   \
    false \
    100000  \
    /mnt/workspace/llama3-datasets/path_to_your_dataset   \
    /mnt/workspace/llama3-datasets/path_to_your_dataset   \
    /path/to/pretraining/checkpoint  \
    10000  \
    100   \
    /workspace/output_mcore_llama3_1

    其中運行run_mcore_llama3_1.sh需要傳入的參數與DSW單機微調模型相同。

您也可以通過設置MP_DATASET_TYPE環境變量,使用JSON格式的數據集進行指令微調。

DSW單機微調模型

代碼示例如下:

export MP_DATASET_TYPE="raw"
cd /mnt/workspace/Pai-Megatron-Patch/examples/llama3_1
sh run_mcore_llama3_1.sh  \
dsw  \
8B   \
1    \
8 \
1e-5   \
1e-6   \
128  \
128  \
bf16  \
4   \
2  \
1 \
true \
true   \
true \
true \
false   \
false \
100000  \
/mnt/workspace/llama3-datasets/alpaca_zh-llama3-train.json   \
/mnt/workspace/llama3-datasets/alpaca_zh-llama3-valid.json   \
/path/to/pretraining/checkpoint  \
10000  \
100   \
/mnt/workspace/output_mcore_llama3_1

其中運行run_mcore_llama3_1.sh腳本,需要將啟動參數PRETRAIN_CHECKPOINT_PATH=${22}配置的預訓練模型路徑替換為您的實際路徑,更多參數配置說明,請參見Megatron-Core預訓練。

DLC分布式微調模型

DSW單機環境調試完成后,您可以在DLC環境中配置多機多卡分布式任務。提交DLC訓練任務時,啟動命令配置如下,其他參數配置詳情,請參見Megatron-Core預訓練。

export MP_DATASET_TYPE="raw"
cd /mnt/workspace/Pai-Megatron-Patch/examples/llama3_1
sh run_mcore_llama3_1.sh  \
dlc  \
8B   \
1    \
8 \
1e-5   \
1e-6   \
128  \
128  \
bf16  \
4   \
2  \
1 \
true \
true   \
true \
true \
false   \
false \
100000  \
/mnt/workspace/llama3-datasets/alpaca_zh-llama3-train.json   \
/mnt/workspace/llama3-datasets/alpaca_zh-llama3-valid.json   \
/path/to/pretraining/checkpoint  \
10000  \
100   \
/mnt/workspace/output_mcore_llama3_1

其中運行run_mcore_llama3_1.sh需要傳入的參數與DSW單機微調模型相同。

步驟五:下游任務評估

您需要將已訓練好的Megatron-Core格式模型轉換為HuggingFace格式。具體操作步驟如下:

  1. 請將模型路徑/mnt/workspace/llama3-ckpts/Meta-Llama-3.1-8B/mcore-tp4-pp2中的JSON文件拷貝至mnt/workspace/output_mcore_llama3_1/checkpoint/pretrain-mcore-llama3-1-8B-****目錄下,以保證模型可以正常使用。

    說明

    請替換為您的實際路徑。

  2. Terminal中執行以下命令,將訓練生成的模型轉換成Huggingface格式的模型。

    cd /mnt/workspace/Pai-Megatron-Patch/toolkits/model_checkpoints_convertor/llama
    bash hf2mcore_convertor_llama3_1.sh \
    8B \
    /mnt/workspace/output_mcore_llama3_1/checkpoint/pretrain-mcore-llama3-1-8B-****    \
    /mnt/workspace/llama3-ckpts/Meta-Llama-3.1-8B/hf-from-mg  \
    4  \
    2  \
    true \
    true \
    false \
    bf16 \
    /mnt/workspace/llama3-ckpts/Meta-Llama-3.1-8B

    其中運行hf2mcore_convertor_llama3_1.sh腳本需要傳入的參數說明,請參見Megatron-Core模型格式轉換

  3. 評估模型效果。

    1. Terminal中執行以下命令,下載評估數據。

      # In container
      cd /workspace
      
      wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/evaluation-datasets/evaluate.tgz 
      wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/evaluation-datasets/cmmlu.tgz 
      wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/evaluation-datasets/ceval.tgz 
      
      tar -xvzf cmmlu.tgz 
      tar -xvzf ceval.tgz 
      tar -xvzf evaluate.tgz
    2. 運行以下命令,對轉換后的模型進行評估。

      cd /mnt/workspace/Pai-Megatron-Patch/LM-Evaluation-Harness-240310
      accelerate launch --main_process_port 29051 -m lm_eval \
      --model hf \
      --model_args pretrained=/mnt/workspace/llama3-ckpts/Meta-Llama-3.1-8B/hf-from-mg,trust_remote_code=True \
      --tasks cmmlu,ceval-valid  \
      --batch_size 16

步驟六:部署及調用在線模型服務

完成離線推理并評估完成模型效果后,您可以將轉換為Huggingface格式的模型部署為在線服務,并在實際的生產環境中調用,從而進行推理實踐。具體操作步驟如下:

部署模型服務

  1. 登錄PAI控制臺,在頁面上方選擇目標地域,并在右側選擇目標工作空間,然后單擊進入EAS。

  2. 單擊部署服務,然后在自定義模型部署區域,單擊自定義部署。

  3. 自定義部署頁面配置以下關鍵參數,其他參數取默認配置即可。

    參數

    描述

    基本信息

    服務名稱

    自定義模型服務名稱,同地域內唯一。本方案配置為:test_llama3_1_8b。

    環境信息

    部署方式

    選擇鏡像部署,并選中開啟Web應用

    鏡像配置

    選擇鏡像地址,在本文框中配置鏡像地址eas-registry-vpc.cn-wulanchabu.cr.aliyuncs.com/pai-eas/chat-llm-webui:3.0.5-llama3.1。

    模型配置

    選擇NAS類型的掛載方式,并配置以下參數:

    • 選擇文件系統:選擇創建數據集使用的NAS文件系統。

    • 文件系統掛載點:選擇創建數據集使用的掛載點。

    • 文件系統路徑:配置為存放在NAS中的轉換后的Huggingface格式模型的路徑。本方案配置為/llama3-ckpts/Meta-Llama-3.1-8B/hf-from-mg

    • 掛載路徑:指定掛載后的路徑,本方案配置為:/llama3.1-8b

    運行命令

    配置為python webui/webui_server.py --port=7860 --model-path=/llama3.1-8b --model-type=llama3

    其中配置的--model-path需要與模型配置中的掛載路徑一致。

    端口號

    配置為7860。

    資源部署

    資源類型

    選擇公共資源。

    部署資源

    本方案以Llama3.1-8B模型為例,推薦使用實例規格ml.gu7i.c16m60.1-gu30,性價比高。

    說明

    如果當前地域的資源不足,您還可以選擇A10(ecs.gn7i-c8g1.2xlarge)類型的資源規格。

    專有網絡

    專有網絡(VPC)

    配置好NAS掛載點后,系統將自動匹配與預設的NAS文件系統一致的VPC、交換機和安全組。

    交換機

    安全組名稱

  4. 單擊部署。

    服務狀態變為運行中時,表明服務部署成功。

調用服務

通過WebUI調用模型服務

服務成功部署后,您可以使用WebUI對該服務進行調試操作。具體操作步驟如下:

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

  2. WebUI頁面中,進行推理模型推理。161c3b229bab5c74f79e21ad2d113204

通過API調用模型服務

當您在WebUI頁面調試好問答效果后,您可利用PAI所提供的API接口,將其集成到您的業務系統中。具體操作,請參見通過API調用EAS服務。

相關文檔

您也可以通過PAI-快速開始(PAI-QuickStart)部署和微調Llama-3系列模型。詳情請參見部署及微調Llama-3系列模型。