全部产品
Search
文档中心

Platform For AI:Kembangkan model Qwen di Layanan Komputasi AI PAI-Lingjun

更新时间:Jan 28, 2026

Topik ini membantu pengembang model dasar memulai penggunaan Layanan Komputasi AI PAI-Lingjun untuk mengembangkan model dasar Qwen-7B, Qwen-14B, dan Qwen-72B. Proses pengembangan mencakup pelatihan terdistribusi, fine-tuning, inferensi offline, serta penerapan online. Dalam contoh ini, model Qwen-7B digunakan untuk menjelaskan praktik terbaik pengembangan model Qwen di Layanan Komputasi AI PAI-Lingjun.

Prasyarat

Dalam contoh ini, digunakan Qwen-7B V1.1.4. Sebelum memulai, pastikan prasyarat berikut telah dipenuhi:

  • Platform for AI (PAI) telah diaktifkan, termasuk Data Science Workshop (DSW), Deep Learning Containers (DLC), dan Elastic Algorithm Service (EAS). Ruang kerja default telah dibuat. Untuk informasi selengkapnya, lihat Aktifkan PAI dan buat ruang kerja default.

  • Sumber daya Lingjun telah dibeli, dan kuota sumber daya telah dibuat untuk sumber daya Lingjun tersebut. Tabel berikut menjelaskan spesifikasi sumber daya yang didukung oleh jumlah parameter model yang berbeda. Pilih spesifikasi sumber daya yang sesuai berdasarkan jumlah parameter model aktual Anda. Untuk informasi lebih lanjut tentang spesifikasi node sumber daya Lingjun, lihat bagian Harga node pada topik "Penagihan sumber daya Lingjun (Edisi Serverless)". Untuk informasi selengkapnya, lihat Buat kelompok sumber daya dan beli sumber daya Lingjun dan Buat kuota sumber daya.

    Jumlah parameter model

    Sumber daya pelatihan parameter penuh

    Sumber daya inferensi minimum

    Paralelisme model untuk pelatihan berbasis Megatron

    7 miliar

    Delapan GPU gu7xf atau delapan GPU gu7ef

    Satu GPU NVIDIA V100 (memori 32 GB) atau satu GPU NVIDIA A10 (memori 24 GB)

    TP1 dan PP1

    14 miliar

    Delapan GPU gu7xf atau delapan GPU gu7ef

    Dua GPU NVIDIA V100 (memori 32 GB) atau dua GPU NVIDIA A10 (memori 24 GB)

    TP2 dan PP1

    72 miliar

    Empat server, masing-masing dengan delapan GPU gu7xf atau delapan GPU gu7ef

    Enam GPU NVIDIA V100 (memori 32 GB) atau dua GPU gu7xf

    TP8 dan PP2

  • Set data dibuat berdasarkan sistem file NAS tujuan umum dari File Storage NAS untuk menyimpan file dan hasil pelatihan. Direktori pemasangan default adalah /mnt/data/nas. Untuk informasi selengkapnya, lihat Buat dan kelola set data.

  • Instans DSW telah dibuat dengan parameter kunci berikut. Untuk informasi selengkapnya, lihat Buat instans DSW.

    • Resource Quota: Pilih kuota sumber daya yang dibuat untuk sumber daya Lingjun yang dibeli.

    • Instance Type: Konfigurasikan spesifikasi sumber daya berikut:

      • vCPUs: 90

      • Memory (GiB): 1.024

      • Shared Memory (GiB): 1.024

      • GPUs: minimal 8

    • Dataset Mounting: Klik Custom Dataset, pilih set data yang telah dibuat, lalu tentukan direktori pemasangan default.

    • Image Configuration: Klik Image Address dan masukkan URL gambar berikut: pai-image-manage-registry.cn-wulanchabu.cr.aliyuncs.com/pai/pytorch-training:1.12-ubuntu20.04-py3.10-cuda11.3-megatron-patch-llm.

  • Pengguna Resource Access Management (RAM) telah diberikan izin yang diperlukan pada DSW, DLC, dan EAS jika Anda melakukan operasi dalam praktik terbaik ini sebagai pengguna RAM. Untuk informasi selengkapnya, lihat Ketergantungan produk cloud dan otorisasi: DSW, Ketergantungan produk cloud dan otorisasi: DLC, dan Berikan izin yang diperlukan untuk menggunakan EAS.

Batasan

Praktik terbaik ini hanya didukung di wilayah China (Ulanqab).

Langkah 1: Siapkan model Qwen

Anda dapat mengunduh model menggunakan salah satu metode yang dijelaskan dalam praktik terbaik ini. Lakukan langkah-langkah berikut:

  1. Masuk ke lingkungan pengembangan DSW.

    1. Masuk ke Konsol PAI.

    2. Di pojok kiri atas halaman, pilih wilayah China (Ulanqab).

    3. Di panel navigasi sebelah kiri, klik Workspaces. Di halaman Ruang Kerja, klik nama ruang kerja yang ingin Anda kelola.

    4. Di panel navigasi sebelah kiri, pilih Model Training > Data Science Workshop (DSW).

    5. Temukan instans DSW yang ingin Anda kelola dan klik Open di kolom Actions.

  2. Di bilah navigasi atas, klik Terminal. Di tab ini, klik create a terminal atau ikon plus (+) di pojok kanan atas.

  3. Unduh model Qwen.

    Unduh model dari komunitas ModelScope

    1. Jalankan perintah berikut di tab Terminal untuk menginstal ModelScope:

    2. pip install modelscope

      Lihat hasil yang dikembalikan. Anda dapat mengabaikan informasi WARNING dalam hasil tersebut.

      Looking in indexes: https://mirrors.cloud.aliyuncs.com/pypi/simple
      Collecting modelscope
        Downloading https://mirrors.cloud.aliyuncs.com/pypi/packages/ac/05/75b5d750608d7354dc3dd023dca7101e5f3b4645cb3e5b816536d472a058/modelscope-1.9.5-py3-none-any.whl (5.4 MB)
           ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.4/5.4 MB 104.7 MB/s eta 0:00:00
      Requirement already satisfied: pyyaml in /opt/*/lib/python3.8/site-packages (from modelscope) (5.4.1)
      Requirement already satisfied: pandas in /opt/*/lib/python3.8/site-packages (from modelscope) (1.5.3)
      Requirement already satisfied: addict in /opt/*/lib/python3.8/site-packages (from modelscope) (2.4.0)
      Requirement already satisfied: numpy in /opt/*/lib/python3.8/site-packages (from modelscope) (1.22.2)
      Collecting simplejson>=3.3.0
        Downloading https://mirrors.cloud.aliyuncs.com/pypi/packages/33/5f/b9506e323ea89737b34c97a6eda9d22ad6b771190df93f6eb72657a3b996/simplejson-3.19.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (136 kB)
           ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 136.6/136.6 kB 70.2 MB/s eta 0:00:00
      Collecting gast>=0.2.2
        Downloading https://mirrors.cloud.aliyuncs.com/pypi/packages/fa/39/5aae571e5a5f4de9c3445dae08a530498e5c53b0e74410eeeb0991c79047/gast-0.5.4-py3-none-any.whl (19 kB)
      Requirement already satisfied: Pillow>=6.2.0 in /opt/*/lib/python3.8/site-packages (from modelscope) (9.3.0)
      Requirement already satisfied: oss2 in /opt/*/lib/python3.8/site-packages (from modelscope) (2.17.0)
      Requirement already satisfied: filelock>=3.3.0 in /opt/*/lib/python3.8/site-packages (from modelscope) (3.11.0)
      Requirement already satisfied: urllib3>=1.26 in /opt/*/lib/python3.8/site-packages (from modelscope) (1.26.12)
      Requirement already satisfied: datasets<=2.13.0,>=2.8.0 in /opt/*/lib/python3.8/site-packages (from modelscope) (2.11.0)
      Requirement already satisfied: attrs in /opt/*/lib/python3.8/site-packages (from modelscope) (22.2.0)
      Requirement already satisfied: scipy in /opt/*/lib/python3.8/site-packages (from modelscope) (1.9.3)
      Requirement already satisfied: yapf in /opt/*/lib/python3.8/site-packages (from modelscope) (0.32.0)
      Requirement already satisfied: pyarrow!=9.0.0,>=6.0.0 in /opt/*/lib/python3.8/site-packages (from modelscope) (11.0.0)
      Requirement already satisfied: setuptools in /opt/*/lib/python3.8/site-packages (from modelscope) (65.5.0)
      Requirement already satisfied: requests>=2.25 in /opt/*/lib/python3.8/site-packages (from modelscope) (2.28.1)
      Requirement already satisfied: einops in /opt/*/lib/python3.8/site-packages (from modelscope) (0.6.0)
      Requirement already satisfied: python-dateutil>=2.1 in /opt/*/lib/python3.8/site-packages (from modelscope) (2.8.2)
      Collecting sortedcontainers>=1.5.9
        Downloading https://mirrors.cloud.aliyuncs.com/pypi/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl (29 kB)
      Requirement already satisfied: tqdm>=4.64.0 in /opt/*/lib/python3.8/site-packages (from modelscope) (4.65.0)
      Requirement already satisfied: dill<0.3.7,>=0.3.0 in /opt/*/lib/python3.8/site-packages (from datasets<=2.13.0,>=2.8.0->modelscope) (0.3.6)
      Requirement already satisfied: multiprocess in /opt/*/lib/python3.8/site-packages (from datasets<=2.13.0,>=2.8.0->modelscope) (0.70.14)
      Requirement already satisfied: aiohttp in /opt/*/lib/python3.8/site-packages (from datasets<=2.13.0,>=2.8.0->modelscope) (3.8.4)
      Requirement already satisfied: responses<0.19 in /opt/*/lib/python3.8/site-packages (from datasets<=2.13.0,>=2.8.0->modelscope) (0.18.0)
      Requirement already satisfied: huggingface-hub<1.0.0,>=0.11.0 in /opt/*/lib/python3.8/site-packages (from datasets<=2.13.0,>=2.8.0->modelscope) (0.16.4)
      Requirement already satisfied: fsspec[http]>=2021.11.1 in /opt/*/lib/python3.8/site-packages (from datasets<=2.13.0,>=2.8.0->modelscope) (2023.4.0)
      Requirement already satisfied: packaging in /opt/*/lib/python3.8/site-packages (from datasets<=2.13.0,>=2.8.0->modelscope) (21.3)
      Requirement already satisfied: xxhash in /opt/*/lib/python3.8/site-packages (from datasets<=2.13.0,>=2.8.0->modelscope) (3.2.0)
      Requirement already satisfied: six>=1.5 in /opt/*/lib/python3.8/site-packages (from python-dateutil>=2.1->modelscope) (1.16.0)
      Requirement already satisfied: certifi>=2017.4.17 in /opt/*/lib/python3.8/site-packages (from requests>=2.25->modelscope) (2022.9.24)
      Requirement already satisfied: charset-normalizer<3,>=2 in /opt/*/lib/python3.8/site-packages (from requests>=2.25->modelscope) (2.0.4)
      Requirement already satisfied: idna<4,>=2.5 in /opt/*/lib/python3.8/site-packages (from requests>=2.25->modelscope) (3.4)
      Requirement already satisfied: aliyun-python-sdk-kms>=2.4.1 in /opt/*/lib/python3.8/site-packages (from oss2->modelscope) (2.16.0)
      Requirement already satisfied: aliyun-python-sdk-core>=2.13.12 in /opt/*/lib/python3.8/site-packages (from oss2->modelscope) (2.13.36)
      Requirement already satisfied: crcmod>=1.7 in /opt/*/lib/python3.8/site-packages (from oss2->modelscope) (1.7)
      Requirement already satisfied: pycryptodome>=3.4.7 in /opt/*/lib/python3.8/site-packages (from oss2->modelscope) (3.15.0)
      Requirement already satisfied: pytz>=2020.1 in /opt/*/lib/python3.8/site-packages (from pandas->modelscope) (2022.7.1)
      Requirement already satisfied: cryptography>=2.6.0 in /opt/*/lib/python3.8/site-packages (from aliyun-python-sdk-core>=2.13.12->oss2->modelscope) (38.0.3)
      Requirement already satisfied: jmespath<1.0.0,>=0.9.3 in /opt/*/lib/python3.8/site-packages (from aliyun-python-sdk-core>=2.13.12->oss2->modelscope) (0.10.0)
      Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /opt/*/lib/python3.8/site-packages (from aiohttp->datasets<=2.13.0,>=2.8.0->modelscope) (4.0.2)
      Requirement already satisfied: yarl<2.0,>=1.0 in /opt/*/lib/python3.8/site-packages (from aiohttp->datasets<=2.13.0,>=2.8.0->modelscope) (1.8.2)
      Requirement already satisfied: frozenlist>=1.1.1 in /opt/*/lib/python3.8/site-packages (from aiohttp->datasets<=2.13.0,>=2.8.0->modelscope) (1.3.3)
      Requirement already satisfied: multidict<7.0,>=4.5 in /opt/*/lib/python3.8/site-packages (from aiohttp->datasets<=2.13.0,>=2.8.0->modelscope) (6.0.4)
      Requirement already satisfied: aiosignal>=1.1.2 in /opt/*/lib/python3.8/site-packages (from aiohttp->datasets<=2.13.0,>=2.8.0->modelscope) (1.3.1)
      Requirement already satisfied: typing-extensions>=3.7.*.* in /opt/*/lib/python3.8/site-packages (from huggingface-hub<1.0.0,>=0.11.0->datasets<=2.13.0,>=2.8.0->modelscope) (4.4.0)
      Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /opt/*/lib/python3.8/site-packages (from packaging->datasets<=2.13.0,>=2.8.0->modelscope) (3.0.9)
      Requirement already satisfied: cffi>=1.12 in /opt/*/lib/python3.8/site-packages (from cryptography>=2.6.0->aliyun-python-sdk-core>=2.13.12->oss2->modelscope) (1.15.1)
      Requirement already satisfied: pycparser in /opt/*/lib/python3.8/site-packages (from cffi>=1.12->cryptography>=2.6.0->aliyun-python-sdk-core>=2.13.12->oss2->modelscope) (2.21)
      Installing collected packages: sortedcontainers, simplejson, gast, modelscope
      Successfully installed gast-0.5.4 modelscope-1.9.5 simplejson-3.19.2 sortedcontainers-2.4.0
      WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
    3. Jalankan perintah berikut untuk masuk ke lingkungan Python:

    4. python
    5. Contoh kode berikut mengunduh paket model Qwen-7B.

    6. # ### Loading Model and Tokenizer
      from modelscope.hub.snapshot_download import snapshot_download
      model_dir = snapshot_download('qwen/Qwen-7B', 'v1.1.4')
      # model_dir = snapshot_download('qwen/Qwen-14B', 'v1.0.4')
      # model_dir = snapshot_download('qwen/Qwen-72B')
      # Display the directory of the downloaded model.
      print(model_dir)
      # /root/.cache/modelscope/hub/qwen/Qwen-7B
    7. Tekan Ctrl+D untuk keluar dari lingkungan Python.

    8. Jalankan perintah berikut untuk memindahkan model yang telah diunduh ke folder yang sesuai:

    9. # mkdir -p /mnt/workspace/qwen-ckpts/${The ckpt folder with the hf suffix}
      mkdir -p /mnt/workspace/qwen-ckpts/qwen-7b-hf
      # cp -r ${The directory of the downloaded model}/* /mnt/workspace/qwen-ckpts/${The ckpt folder with the hf suffix}
      cp -r /root/.cache/modelscope/hub/qwen/Qwen-7B/* /mnt/workspace/qwen-ckpts/qwen-7b-hf

    Unduh model dari komunitas Hugging Face

    Jalankan perintah berikut di tab Terminal DSW untuk mengunduh paket model. Dalam contoh ini, paket model Qwen-7B diunduh. Jika Anda ingin mengunduh paket model Qwen-14B atau Qwen-72B, ubah kode contoh berikut sesuai kebutuhan bisnis Anda:

    mkdir /mnt/workspace/qwen-ckpts
    cd /mnt/workspace/qwen-ckpts
    git clone https://huggingface.co/Qwen/Qwen-7B
    # git clone https://huggingface.co/Qwen/Qwen-7B-Chat
    # git clone https://huggingface.co/Qwen/Qwen-14B
    # git clone https://huggingface.co/Qwen/Qwen-14B-Chat
    # git clone https://huggingface.co/Qwen/Qwen-72B
    # git clone https://huggingface.co/Qwen/Qwen-72B-Chat

Langkah 2: Siapkan data untuk pre-training

Kami menyarankan agar Anda menyiapkan data yang digunakan untuk pre-training di instans DSW. Dalam contoh ini, set data WuDaoCorpora 2.0 digunakan untuk menjelaskan cara memproses data untuk pelatihan berbasis Megatron. Set data ini hanya digunakan untuk penelitian. Anda dapat langsung mengunduh data sampel skala kecil yang telah diproses oleh PAI atau menyiapkan data pre-training sendiri.

Gunakan data sampel skala kecil yang telah diproses oleh PAI

Untuk membantu Anda menggunakan praktik terbaik ini, PAI menyediakan data sampel skala kecil yang telah diproses. Anda dapat menjalankan perintah berikut di tab Terminal DSW untuk mengunduh data sampel:

mkdir /mnt/workspace/qwen-datasets/
cd /mnt/workspace/qwen-datasets
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/qwen-datasets/alpaca_zh-qwen-train.json
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/qwen-datasets/alpaca_zh-qwen-valid.json
mkdir -p /mnt/workspace/qwen-datasets/wudao
cd /mnt/workspace/qwen-datasets/wudao
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/qwen-datasets/wudao_qwenbpe_content_document.bin
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/qwen-datasets/wudao_qwenbpe_content_document.idx

Proses data sendiri

  1. Unduh set data open source WuDaoCorpora 2.0 ke direktori kerja /mnt/workspace/qwen-datasets. Dalam contoh ini, folder yang diekstrak diberi nama wudao_200g.

    Data sampel skala kecil yang diproses oleh PAI juga berasal dari set data ini. Anda dapat menjalankan perintah berikut di tab Terminal DSW untuk mengunduh dan mengekstrak set data:

    mkdir /mnt/workspace/qwen-datasets
    cd /mnt/workspace/qwen-datasets
    wget https://atp-modelzoo.oss-cn-hangzhou.aliyuncs.com/release/datasets/WuDaoCorpus2.0_base_sample.tgz
    tar zxvf WuDaoCorpus2.0_base_sample.tgz 
    mv WuDaoCorpus2.0_base_sample wudao_200g
  2. Jalankan perintah berikut di tab Terminal untuk melakukan pembersihan data pada set data WuDaoCorpora 2.0, mengonversi format file, lalu menghasilkan file merged_wudao_cleaned.json:

    #! /bin/bash
    set -ex
    # Specify the directory of the WuDaoCorpora 2.0 dataset. 
    data_dir=/mnt/workspace/qwen-datasets/wudao_200g
    
    # Start the data cleansing process. 
    dataset_dir=$(dirname $data_dir)
    mkdir -p ${dataset_dir}/cleaned_wudao_dataset
    cd ${dataset_dir}/cleaned_wudao_dataset
    wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/llama2-codes/preprocess_wudao2.py
    # Set the -k option to text. 
    python preprocess_wudao2.py -i ${data_dir} -o ${dataset_dir}/cleaned_wudao_dataset -k text -p 32
    
    # Merge the cleansed data. 
    mkdir ${dataset_dir}/wudao
    cd ${dataset_dir}/wudao
    find ${dataset_dir}/cleaned_wudao_dataset -name "*.json" -exec cat {} + > ${dataset_dir}/wudao/merged_wudao_cleaned.json
    rm -rf ${dataset_dir}/cleaned_wudao_dataset
    

    Kode contoh berikut menunjukkan struktur direktori qwen-datasets setelah perintah di atas dijalankan. Folder wudao dibuat.

    qwen-datasets
    ├── wudao_200g 
    └── wudao
        └── merged_wudao_cleaned.json
  3. Jalankan perintah berikut di tab Terminal untuk membagi data menjadi beberapa kelompok dan mengompresi data setiap kelompok dengan memproses file merged_wudao_cleaned.json yang dihasilkan. Hal ini memfasilitasi multithreading dalam operasi selanjutnya.

    apt-get update
    apt-get install zstd
    
    # Split data into 10 groups. If data processing is slow, you can split data into more groups. 
    NUM_PIECE=10
    
    # Process the merged_wudao_cleaned.json file. 
    mkdir -p ${dataset_dir}/cleaned_zst/
    # Query the total length of data and split the data. 
    NUM=$(sed -n '$=' ${dataset_dir}/wudao/merged_wudao_cleaned.json)
    echo "total line of dataset is $NUM, data will be split into $NUM_PIECE pieces for processing"
    NUM=`expr $NUM / $NUM_PIECE`
    echo "each group is processing $NUM sample"
    split_dir=${dataset_dir}/split
    mkdir $split_dir
    split -l $NUM --numeric-suffixes --additional-suffix=.jsonl ${dataset_dir}/wudao/merged_wudao_cleaned.json $split_dir/
    
    # Compress the data of each group. 
    o_path=${dataset_dir}/cleaned_zst/
    mkdir -p $o_path
    files=$(ls $split_dir/*.jsonl)
    for filename in $files
    do
       f=$(basename $filename)
       zstd -z $filename -o $o_path/$f.zst &
    done
    rm -rf $split_dir
    rm ${dataset_dir}/wudao/merged_wudao_cleaned.json
    

    Kode contoh berikut menunjukkan struktur direktori qwen-datasets setelah perintah di atas dijalankan. Folder cleaned_zst dibuat dan berisi 10 file terkompresi.

    qwen-datasets
    ├── wudao_200g
    ├── wudao
    └── cleaned_zst
        ├── 00.jsonl.zst
    		│   ...
        └── 09.jsonl.zst
  4. Hasilkan set data untuk pre-training dalam format MMAP.

    MMAP adalah format file di mana data telah ditokenisasi sebelumnya. Format ini mengurangi waktu yang diperlukan untuk membaca data dari set data selama pelatihan dan fine-tuning, terutama saat memproses data dalam jumlah besar. Lakukan langkah-langkah berikut:

    1. Jalankan perintah berikut di tab Terminal DSW untuk menyalin file PAI-Megatron-Patch yang berisi kode sumber alat pelatihan berbasis Megatron ke direktori kerja DSW /mnt/workspace/:

      cd /mnt/workspace/
      # Method 1: Obtain the source code of the training tool from GitHub. 
      git clone --recurse-submodules https://github.com/alibaba/Pai-Megatron-Patch.git
      # Method 2: Obtain the source code of the training tool by running the wget command. Then, run the tar zxvf Pai-Megatron-Patch.tgz command to decompress the downloaded file. 
      wget https://atp-modelzoo.oss-cn-hangzhou.aliyuncs.com/release/models/Pai-Megatron-Patch.tgz
    2. Jalankan perintah berikut di tab Terminal untuk mengonversi set data ke format MMAP:

      Setelah perintah dijalankan, file .bin dan .idx dihasilkan di direktori /mnt/workspace/qwen-datasets/wudao.

      # Install the tokenizer library on which Qwen depends. 
      pip install tiktoken
      # Specify the directory of the dataset and the working directory. 
      export dataset_dir=/mnt/workspace/qwen-datasets
      export WORK_DIR=/mnt/workspace
      
      # Generate the training set and validation set used for pre-training in the MMAP format. 
      cd ${WORK_DIR}/Pai-Megatron-Patch/toolkits/pretrain_data_preprocessing
      bash run_make_pretraining_dataset.sh \
      ../../Megatron-LM-23.04 \
      ${WORK_DIR}/Pai-Megatron-Patch/ \
      ${dataset_dir}/cleaned_zst/ \
      qwenbpe \
      ${dataset_dir}/wudao/ \
      ${WORK_DIR}/qwen-ckpts/qwen-7b-hf
      rm -rf ${dataset_dir}/cleaned_zst

      Tabel berikut menjelaskan enam parameter yang harus Anda tentukan untuk menjalankan skrip run_make_pretraining_dataset.sh.

      Parameter

      Deskripsi

      MEGATRON_PATH=$1

      Direktori kode sumber alat pelatihan berbasis Megatron.

      MEGATRON_PATCH_PATH=$2

      Direktori folder Pai-Megatron-Patch.

      input_data_dir=$3

      Direktori set data WuDaoCorpora 2.0 yang telah diproses dan dikemas.

      tokenizer=$4

      Jenis tokenizer. Dalam contoh ini, nilainya diatur ke qwenbpe.

      output_data_dir=$5

      Direktori file .bin dan .idx yang dihasilkan.

      load_dir=$6

      Direktori file tokenizer_config.json yang dihasilkan.

      Kode contoh berikut menunjukkan struktur direktori qwen-datasets setelah skrip dijalankan:

      qwen-datasets
      ├── wudao_200g
      └── wudao
         ├── wudao_qwenbpe_content_document.bin
         └── wudao_qwenbpe_content_document.idx

Langkah 3: Lakukan pelatihan berbasis Megatron

Anda dapat melakukan operasi berikut untuk melakukan pelatihan berbasis Megatron:

Konversi format model

Anda harus mengonversi format model dari Hugging Face ke Megatron.

Unduh model Megatron yang telah dikonversi

Untuk membantu Anda menggunakan praktik terbaik ini, PAI menyediakan model yang formatnya telah dikonversi. Anda dapat menjalankan perintah berikut di tab Terminal untuk mengunduh model:

cd /mnt/workspace/
mkdir qwen-ckpts
cd qwen-ckpts
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/qwen-ckpts/qwen-7b-hf-to-mg-tp1-pp1.tgz
tar -zxf qwen-7b-hf-to-mg-tp1-pp1.tgz
mv qwen-7b-hf-to-mg-tp1-pp1 qwen-7b-hf-to-megatron-tp1-pp1

Konversi format model dari Hugging Face ke Megatron

Jalankan perintah berikut di tab Terminal untuk menggunakan alat konversi model yang disediakan oleh PAI guna mengonversi format model dari Hugging Face ke Megatron:

# Convert the model format. 
cd /mnt/workspace/Pai-Megatron-Patch/toolkits/model_checkpoints_convertor/qwen
sh model_convertor.sh \
../../../Megatron-LM-main        \
/mnt/workspace/qwen-ckpts/qwen-7b-hf         \
/mnt/workspace/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1  \
1  \
1  \
qwen-7b \
0 \
false

Tabel berikut menjelaskan parameter yang harus Anda tentukan untuk menjalankan skrip model_convertor.sh.

Parameter

Deskripsi

MEGATRON_PATH=$1

Direktori kode sumber alat pelatihan berbasis Megatron.

SOURCE_CKPT_PATH=$2

Direktori model Hugging Face.

TARGET_CKPT_PATH=$3

Direktori model Megatron yang telah dikonversi.

TP=$4

Ukuran paralelisme tensor, yang harus sama dengan yang digunakan untuk pelatihan. Ukuran ini bervariasi berdasarkan jumlah parameter model. Anda harus mengubah ukuran ini saat mengonversi format model.

  • Qwen-7B: 1

  • Qwen-14B: 2

  • Qwen-72B: 8

PP=$5

Ukuran paralelisme pipeline, yang harus sama dengan yang digunakan untuk pelatihan. Ukuran ini bervariasi berdasarkan jumlah parameter model. Anda harus mengubah ukuran ini saat mengonversi format model.

  • Qwen-7B: 1

  • Qwen-14B: 1

  • Qwen-72B: 2

MN=$6

Nama model, seperti qwen-7b, qwen-14b, atau qwen-72b.

EXTRA_VOCAB_SIZE=$7

Ukuran kosakata tambahan.

mg2hf=$8

Menentukan apakah akan mengonversi format model dari Megatron ke Hugging Face.

Pre-train model

Anda dapat mengirimkan pekerjaan standalone untuk melatih model di DSW atau mengirimkan pekerjaan terdistribusi untuk melatih model di beberapa server multi-GPU di DLC. Proses pelatihan berlangsung sekitar 2 jam. Setelah pekerjaan selesai, file model diekspor ke direktori /mnt/workspace/output_megatron_qwen/.

Jalankan pekerjaan standalone untuk pre-train model di DSW

Kode contoh berikut menjalankan pekerjaan standalone untuk melatih model Qwen-7B di tab Terminal:

export WORK_DIR=/mnt/workspace
cd ${WORK_DIR}/Pai-Megatron-Patch/examples/qwen
sh run_pretrain_megatron_qwen.sh  \
dsw  \
${WORK_DIR}/Pai-Megatron-Patch  \
7B   \
1    \
8 \
1e-5   \
1e-6   \
2048  \
2048  \
85   \
fp16  \
1   \
1  \
sel  \
true   \
false  \
false   \
false  \
100000  \
${WORK_DIR}/qwen-datasets/wudao/wudao_qwenbpe_content_document   \
${WORK_DIR}/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1   \
100000000   \
10000   \
${WORK_DIR}/output_megatron_qwen/   

Tabel berikut menjelaskan parameter yang harus Anda tentukan untuk menjalankan skrip run_pretrain_megatron_qwen.sh.

Parameter

Deskripsi

ENV=$1

Lingkungan runtime. Nilai yang valid:

  • dsw

  • dlc

MEGATRON_PATH=$2

Direktori kode sumber alat pelatihan berbasis Megatron.

MODEL_SIZE=$3

Jumlah parameter model. Nilai yang valid: 7B, 14B, dan 72B.

BATCH_SIZE=$4

Jumlah sampel pada setiap GPU untuk setiap iterasi pelatihan. Nilai yang valid: 4 dan 8.

GLOBAL_BATCH_SIZE=$5

Jumlah total sampel untuk iterasi pelatihan.

LR=$6

Tingkat pembelajaran. Nilai yang valid: 1e-5 dan 5e-5.

MIN_LR=$7

Tingkat pembelajaran minimum. Nilai yang valid: 1e-6 dan 5e-6.

SEQ_LEN=$8

Panjang urutan.

PAD_LEN=${9}

Panjang urutan padding.

EXTRA_VOCAB_SIZE=${10}

Ukuran kosakata tambahan. Ukuran ini bervariasi berdasarkan jumlah parameter model.

  • Qwen-7B: 85

  • Qwen-14B: 213

  • Qwen-72B: 213

PR=${11}

Precisi pelatihan. Nilai yang valid: fp16 dan bf16.

TP=${12}

Ukuran paralelisme tensor.

PP=${13}

Ukuran paralelisme pipeline.

AC=${14}

Mode activation checkpointing. Nilai yang valid:

  • full

  • sel

DO=${15}

Menentukan apakah akan menggunakan pengoptimal ZeRO-1 untuk Megatron. Nilai yang valid:

  • true

  • false

FL=${16}

Menentukan apakah akan mengaktifkan Flash Attention. Nilai yang valid:

  • true

  • false

SP=${17}

Menentukan apakah akan menggunakan paralelisme urutan. Nilai yang valid:

  • true

  • false

TE=${18}

Menentukan apakah akan mengaktifkan teknologi akselerasi Transformer Engine. Jika Anda ingin mengaktifkan teknologi ini, diperlukan GPU gu8xf.

SAVE_INTERVAL=${19}

Interval penyimpanan file checkpoint.

DATASET_PATH=${20}

Direktori set pelatihan.

PRETRAIN_CHECKPOINT_PATH=${21}

Direktori model pra-latih.

TRAIN_TOKENS=${22}

Jumlah token untuk pelatihan.

WARMUP_TOKENS=${23}

Jumlah token untuk warm-up.

OUTPUT_BASEPATH=${24}

Direktori file model output yang dihasilkan setelah pelatihan.

Jalankan pekerjaan terdistribusi untuk pre-train model di DLC

Setelah melatih model di DSW, Anda dapat mengonfigurasi pekerjaan terdistribusi untuk melatih model di beberapa server multi-GPU di DLC. Lakukan langkah-langkah berikut:

  1. Masuk ke halaman Create Job.

    1. Masuk ke Konsol PAI. Pilih wilayah dan ruang kerja target di bagian atas halaman, lalu klik Deep Learning Containers (DLC).

    2. Di halaman Deep Learning Containers (DLC), klik Create Job.

  2. Di halaman Create Job, konfigurasikan parameter yang dijelaskan dalam tabel berikut. Anda dapat menggunakan nilai default untuk parameter lainnya. Untuk informasi selengkapnya, lihat Buat pekerjaan pelatihan.

    Parameter

    Deskripsi

    Basic Information

    Job Name

    Nama pekerjaan pelatihan. Dalam contoh ini, nilainya diatur ke test_qwen_dlc.

    Environment Information

    Image Configuration

    Klik Image Address dan masukkan URL gambar berikut di kolom tersebut: pai-image-manage-registry.cn-wulanchabu.cr.aliyuncs.com/pai/pytorch-training:1.12-ubuntu20.04-py3.10-cuda11.3-megatron-patch-llm.

    Mount dataset

    Klik Custom Dataset dan konfigurasikan parameter berikut:

    • Custom Dataset: Pilih set data yang dibuat berdasarkan sistem file NAS tujuan umum dari File Storage NAS.

    • Mount Path: Masukkan /mnt/workspace/.

    Startup Command

    Masukkan perintah berikut. Parameter yang harus Anda tentukan untuk menjalankan skrip run_pretrain_megatron_qwen.sh sama dengan yang Anda tentukan saat mengirimkan pekerjaan standalone untuk melatih model di DSW.

    export WORK_DIR=/mnt/workspace
    cd ${WORK_DIR}/Pai-Megatron-Patch/examples/qwen
    sh run_pretrain_megatron_qwen.sh  \
    dlc  \
    ${WORK_DIR}/PAI-Megatron-Patch  \
    7B   \
    1    \
    8 \
    1e-5   \
    1e-6   \
    2048  \
    2048  \
    85   \
    fp16  \
    1   \
    1  \
    sel  \
    true   \
    false  \
    false   \
    false \
    100000  \
    ${WORK_DIR}/qwen-datasets/wudao/wudao_qwenbpe_content_document   \
    ${WORK_DIR}/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1   \
    100000000   \
    10000   \
    ${WORK_DIR}/output_megatron_qwen/    

    Resource Information

    Resource Type

    Pilih Lingjun Resources.

    Source

    Pilih Resource Quota.

    Resource Quota

    Pilih kuota sumber daya yang dibuat untuk sumber daya Lingjun yang dibeli.

    Framework

    Pilih PyTorch.

    Job Resource

    Konfigurasikan parameter berikut untuk node pekerja:

    • Nodes: Masukkan 2. Jika Anda ingin melatih model di lebih banyak server, Anda dapat menambah nilai parameter Nodes.

    • GPUs: Masukkan 8.

    • vCPUs: Masukkan 90.

      Catatan

      Jumlah core CPU tidak boleh lebih dari 96.

    • Memory (GiB): Masukkan 1024.

    • Shared Memory (GiB): Masukkan 1024.

  3. Klik OK. Anda akan diarahkan ke halaman Deep Learning Containers (DLC). Jika status pekerjaan berubah menjadi Succeeded, berarti pekerjaan pelatihan telah selesai.

Lakukan supervised fine-tuning

Anda dapat mengirimkan pekerjaan standalone untuk fine-tune model di DSW atau mengirimkan pekerjaan terdistribusi untuk fine-tune model di beberapa server multi-GPU di DLC. Proses fine-tuning berlangsung sekitar 2 jam. Setelah pekerjaan selesai, file model diekspor ke direktori /mnt/workspace/output_megatron_qwen/.

  1. Sebelum melakukan fine-tuning model, buka Langkah 2: Siapkan data untuk pre-training. Gunakan kode contoh pada tab Gunakan data sampel skala kecil yang telah diproses oleh PAI untuk mengunduh file JSON.

  2. Lakukan fine-tuning model.

    Jalankan pekerjaan standalone untuk fine-tune model di DSW

    Kode contoh berikut menjalankan pekerjaan standalone untuk fine-tune model Qwen-7B di tab Terminal:

    export WORK_DIR=/mnt/workspace
    cd ${WORK_DIR}/Pai-Megatron-Patch/examples/qwen
    sh run_finetune_megatron_qwen_withGA.sh  \
    dsw  \
    ${WORK_DIR}/Pai-Megatron-Patch  \
    7B     \
    1      \
    96 \
    1e-5   \
    1e-6   \
    2048   \
    2048     \
    85      \
    bf16   \
    1      \
    1      \
    sel    \
    true   \
    false  \
    false  \
    false \
    1000 \
    ${WORK_DIR}/qwen-datasets/alpaca_zh-qwen-train.json   \
    ${WORK_DIR}/qwen-datasets/alpaca_zh-qwen-valid.json   \
    ${WORK_DIR}/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1   \
    2000   \
    10 \
    ${WORK_DIR}/output_megatron_qwen/

    Tabel berikut menjelaskan parameter yang harus Anda tentukan untuk menjalankan skrip run_finetune_megatron_qwen_withGA.sh.

    Parameter

    Deskripsi

    ENV=$1

    Lingkungan runtime. Nilai yang valid:

    • dlc

    • dsw

    MEGATRON_PATH=$2

    Direktori kode sumber alat pelatihan berbasis Megatron.

    MODEL_SIZE=$3

    Jumlah parameter model. Nilai yang valid: 7B, 14B, dan 72B.

    BATCH_SIZE=$4

    Jumlah sampel pada setiap GPU untuk setiap iterasi fine-tuning. Nilai yang valid: 1, 2, 4, dan 8.

    GLOBAL_BATCH_SIZE=$5

    Jumlah total sampel untuk iterasi fine-tuning. Nilai yang valid: 64, 96, dan 128.

    LR=$6

    Tingkat pembelajaran. Nilai yang valid: 1e-5 dan 5e-5.

    MIN_LR=$7

    Tingkat pembelajaran minimum. Nilai yang valid: 1e-6 dan 5e-6.

    SEQ_LEN=$8

    Panjang urutan.

    PAD_LEN=$9

    Panjang urutan padding.

    EXTRA_VOCAB_SIZE=${10}

    Ukuran kosakata tambahan. Ukuran ini bervariasi berdasarkan jumlah parameter model.

    • Qwen-7B: 85

    • Qwen-14B: 213

    • Qwen-72B: 213

    PR=${11}

    Precisi pelatihan. Nilai yang valid: fp16 dan bf16.

    TP=${12}

    Ukuran paralelisme tensor.

    PP=${13}

    Ukuran paralelisme pipeline.

    AC=${14}

    Mode activation checkpointing. Nilai yang valid: full dan sel.

    DO=${15}

    Menentukan apakah akan menggunakan pengoptimal ZeRO-1 untuk Megatron. Nilai yang valid:

    • true

    • false

    FL=${16}

    Menentukan apakah akan mengaktifkan Flash Attention. Nilai yang valid:

    • true

    • false

    SP=${17}

    Menentukan apakah akan menggunakan paralelisme urutan. Nilai yang valid:

    • true

    • false

    TE=${18}

    Menentukan apakah akan mengaktifkan teknologi akselerasi Transformer Engine. Jika Anda ingin mengaktifkan teknologi ini, diperlukan GPU gu8xf.

    SAVE_INTERVAL=${19}

    Interval penyimpanan model.

    DATASET_PATH=${20}

    Direktori set pelatihan.

    VALID_DATASET_PATH=${21}

    Direktori set validasi.

    PRETRAIN_CHECKPOINT_PATH=${22}

    Direktori model pra-latih.

    TRAIN_ITERS=${23}

    Jumlah iterasi pelatihan.

    LR_WARMUP_ITERS=${24}

    Jumlah iterasi warm-up untuk tingkat pembelajaran.

    OUTPUT_BASEPATH=${25}

    Direktori file model output yang dihasilkan setelah pelatihan.

    Jalankan pekerjaan terdistribusi untuk fine-tune model di DLC

    Setelah melakukan fine-tuning model di DSW, Anda dapat mengonfigurasi pekerjaan terdistribusi untuk fine-tune model di beberapa server multi-GPU di DLC. Saat mengirimkan pekerjaan pelatihan di DLC, masukkan perintah berikut untuk parameter Startup Command. Untuk informasi selengkapnya tentang parameter lainnya, lihat bagian Pre-train model dalam topik ini.

    export WORK_DIR=/mnt/workspace
    cd ${WORK_DIR}/Pai-Megatron-Patch/examples/qwen
    sh run_finetune_megatron_qwen_withGA.sh  \
    dlc  \
    ${WORK_DIR}/Pai-Megatron-Patch  \
    7B     \
    1      \
    96 \
    1e-5   \
    1e-6   \
    2048   \
    2048     \
    85      \
    bf16   \
    1      \
    1      \
    sel    \
    true   \
    false  \
    false  \
    false \
    1000 \
    ${WORK_DIR}/qwen-datasets/alpaca_zh-qwen-train.json   \
    ${WORK_DIR}/qwen-datasets/alpaca_zh-qwen-valid.json   \
    ${WORK_DIR}/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1   \
    2000   \
    10 \
    ${WORK_DIR}/output_megatron_qwen/

    Parameter yang harus Anda tentukan untuk menjalankan skrip run_finetune_megatron_qwen_withGA.sh sama dengan yang Anda tentukan saat mengirimkan pekerjaan standalone untuk fine-tune model di DSW.

Langkah 4: Gunakan model untuk inferensi offline

Setelah model dilatih, Anda dapat melakukan inferensi offline menggunakan model berbasis Megatron untuk mengevaluasi efek model. Lakukan langkah-langkah berikut:

  1. Unduh file pred_input.jsonl yang berisi sampel uji dan unggah file tersebut ke direktori /mnt/workspace DSW. Untuk informasi selengkapnya, lihat Unggah dan unduh file.

    Catatan

    Data yang digunakan untuk inferensi harus diorganisasi dengan cara yang sama seperti untuk fine-tuning.

  2. Salin semua file JSON dan file tokenizer.model di direktori model sebelum pelatihan ke direktori file model output yang dihasilkan setelah pelatihan. Kemudian, file-file tersebut ditempatkan di direktori {OUTPUT_BASEPATH }/checkpoint dan dalam folder yang sama dengan file latest_checkpointed_iteration.txt.

    Catatan

    Ganti direktori dalam perintah dengan direktori aktual Anda.

    cd /mnt/workspace/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1
    cp *.json /mnt/workspace/output_megatron_qwen/checkpoint/dswXXX/
    cp tokenizer.model /mnt/workspace/output_megatron_qwen/checkpoint/dswXXX/
  3. Jalankan perintah berikut di tab Terminal untuk melakukan inferensi offline menggunakan model. Hasil inferensi dihasilkan dalam file /mnt/workspace/qwen_pred.txt. Anda dapat mengevaluasi efek model berdasarkan hasil inferensi tersebut.

    Catatan

    Sebelum menjalankan perintah, Anda harus mengatur parameter CUDA_VISIBLE_DEVICES ke 0 dan parameter GPUS_PER_NODE ke 1 dalam skrip run_text_generation_megatron_qwen.sh.

    export WORK_DIR=/mnt/workspace
    cd ${WORK_DIR}/Pai-Megatron-Patch/examples/qwen
    bash run_text_generation_megatron_qwen.sh \
    dsw \
    ${WORK_DIR}/PAI-Megatron-Patch \
    /mnt/workspace/output_megatron_qwen/checkpoint/dswXXX \
    7B \
    1 \
    1 \
    1024 \
    1024 \
    85 \
    fp16 \
    10 \
    512 \
    512 \
    ${WORK_DIR}/pred_input.jsonl \
    ${WORK_DIR}/qwen_pred.txt \
    0 \
    1.0 \
    1.2

    Tabel berikut menjelaskan parameter yang harus Anda tentukan untuk menjalankan skrip run_text_generation_megatron_qwen.sh.

    Parameter

    Deskripsi

    ENV=$1

    Lingkungan runtime. Nilai yang valid:

    • dlc

    • dsw

    MEGATRON_PATCH_PATH=$2

    Direktori folder Pai-Megatron-Patch.

    CHECKPOINT_PATH=$3

    Direktori model selama pelatihan.

    Penting

    Ganti direktori ini dengan direktori model aktual Anda.

    MODEL_SIZE=$4

    Jumlah parameter model. Nilai yang valid: 7B, 14B, dan 72B.

    TP=$5

    Ukuran paralelisme tensor.

    Penting
    • Jika Anda mengatur parameter ini ke 1, Anda dapat menggunakan satu GPU untuk inferensi.

    • Jika Anda mengatur parameter ini ke nilai lebih dari 1, Anda harus menggunakan jumlah GPU yang sesuai untuk inferensi.

    BS=$6

    Jumlah sampel pada setiap GPU untuk setiap iterasi inferensi. Nilai yang valid: 1, 4, dan 8.

    SEQ_LEN=$7

    Panjang urutan. Nilai yang valid: 256, 512, dan 1024.

    PAD_LEN=$8

    Panjang urutan padding, yaitu panjang teks yang digabungkan.

    EXTRA_VOCAB_SIZE=${9}

    Jumlah token yang ditambahkan selama konversi model. Jumlah ini bervariasi berdasarkan jumlah parameter model.

    • Qwen-7B: 85

    • Qwen-14B: 213

    • Qwen-72B: 213

    PR=${10}

    Precisi inferensi. Nilai yang valid: fp16 dan bf16.

    TOP_K=${11}

    Jumlah n kata kandidat teratas yang dipilih. Nilai yang valid: 0 hingga n. Contoh: 0, 5, 10, dan 20.

    INPUT_SEQ_LEN=${12}

    Panjang urutan input. Atur nilainya ke 512.

    OUTPUT_SEQ_LEN=${13}

    Panjang urutan output. Atur nilainya ke 256.

    INPUT_FILE=${14}

    File yang berisi teks yang akan digunakan untuk inferensi. Dalam contoh ini, digunakan file pred_input.jsonl, di mana setiap baris berisi satu sampel.

    OUTPUT_FILE=${15}

    File output yang dihasilkan setelah inferensi. Dalam contoh ini, digunakan file qwen_pred.txt.

    TOP_P=${16}

    Persentase kata kandidat teratas yang dipilih. Nilai yang valid: 0 hingga 1. Contoh: 0, 0.85, dan 0.95.

    Catatan

    Anda harus mengatur salah satu parameter TOP_K atau TOP_P ke 0.

    TEMPERATURE=${17}

    Tingkat keacakan proses sampling. Nilai yang valid: 1 hingga n.

    REPETITION_PENALTY=${18}

    Hukuman pengulangan untuk konten yang dihasilkan model. Nilai yang valid: 1 hingga 2. Nilai default: 1.2.

Langkah 5: Konversi format model

Jika efek model memenuhi ekspektasi Anda setelah melakukan inferensi offline menggunakan model, Anda dapat mengonversi format model dari Megatron ke Hugging Face. Kemudian, Anda dapat menerapkan model Hugging Face yang dikonversi sebagai layanan model.

  1. Jalankan perintah berikut di tab Terminal untuk mengonversi format model dari Megatron ke Hugging Face:

    export WORK_DIR=/mnt/workspace
    cd /mnt/workspace/Pai-Megatron-Patch/toolkits/model_checkpoints_convertor/qwen
    sh model_convertor.sh \
    ../../../Megatron-LM-main        \
    ${WORK_DIR}/output_megatron_qwen/checkpoint/${Directory}/iter_*******         \
    /mnt/workspace/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1/  \
    1  \
    1  \
    qwen-7b \
    0 \
    true

    Tabel berikut menjelaskan parameter yang harus Anda tentukan untuk menjalankan skrip model_convertor.sh.

    Parameter

    Deskripsi

    MEGATRON_PATH=$1

    Direktori kode sumber alat pelatihan berbasis Megatron.

    SOURCE_CKPT_PATH=$2

    Direktori model yang telah dilatih dalam format Megatron, termasuk folder iter_*. Contoh: ${WORK_DIR}/output_megatron_qwen/checkpoint/dsw-pretrain-megatron-qwen-7B-lr-1e-5-bs-1-seqlen-2048-pr-bf16-tp-1-pp-1-ac-sel-do-true-sp-false-tt--wt-/iter_*******.

    Penting
    • Ganti direktori ini dengan direktori model aktual Anda.

    • Jika Anda perlu mengonversi format model pra-latih, Anda harus menghapus semua file distrib_optim.pt di direktori model.

    TARGET_CKPT_PATH=$3

    Direktori model Hugging Face yang dikonversi.

    TP=$4

    Ukuran paralelisme tensor, yang harus sama dengan yang digunakan untuk pelatihan.

    PP=$5

    Ukuran paralelisme pipeline, yang harus sama dengan yang digunakan untuk pelatihan.

    MN=$6

    Nama model, seperti qwen-7b, qwen-14b, atau qwen-72b.

    EXTRA_VOCAB_SIZE=$7

    Ukuran kosakata tambahan.

    mg2hf=$8

    Menentukan apakah akan mengonversi format model dari Megatron ke Hugging Face.

  2. Salin file .json, .py, dan .tiktoken di direktori model Hugging Face open source /mnt/workspace/qwen-ckpts/qwen-7b-hf ke direktori /mnt/workspace/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1 untuk memastikan model dapat digunakan dengan benar.

    Penting

    Perhatikan bahwa Anda tidak perlu menyalin file pytorch_model.bin.index.json.

Gunakan model Hugging Face untuk inferensi offline

Anda dapat melakukan inferensi offline menggunakan model Hugging Face yang dikonversi berdasarkan Hugging Face dan DeepSpeed. Misalnya, buat file infer.py yang berisi konten berikut di direktori untuk model Qwen-7B di tab Terminal. Jalankan file infer.py untuk melakukan inferensi offline menggunakan model dan evaluasi efek model berdasarkan hasil inferensi.

#!/usr/bin/env python
#encoding=utf-8
from transformers import AutoTokenizer, LlamaTokenizer
from transformers import LlamaForCausalLM
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
 
checkpoint = '/mnt/workspace/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1'
print(checkpoint)
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained(checkpoint, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(checkpoint,device_map="auto", trust_remote_code=True)
 
prompts = 'Write a quick sorting algorithm.'
p = f"Human:{prompts}"
print(p)
inputs = tokenizer.encode(p, return_tensors="pt").to(model.device)
outputs = model.generate(inputs,max_new_tokens=512)
print(tokenizer.decode(outputs[0]))

Ganti checkpoint dengan direktori model Hugging Face yang dikonversi. Dalam contoh ini, digunakan direktori /mnt/workspace/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1.

Langkah 6: Terapkan model sebagai layanan model dan panggil layanan model

Setelah melakukan inferensi offline dan mengevaluasi efek model, Anda dapat menerapkan model Hugging Face yang dikonversi sebagai layanan model online dan memanggil layanan model tersebut di lingkungan produksi aktual untuk melakukan inferensi. Lakukan langkah-langkah berikut:

Terapkan model sebagai layanan model

  1. Masuk ke Konsol PAI. Pilih wilayah di bagian atas halaman. Kemudian, pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).

  2. Klik Deploy Service. Di bagian Custom Model Deployment, klik Custom Deployment.

  3. Di halaman Custom Deployment, konfigurasikan parameter yang dijelaskan dalam tabel berikut. Anda dapat menggunakan nilai default untuk parameter lainnya.

    Parameter

    Deskripsi

    Basic Information

    Service Name

    Nama kustom layanan model. Nama harus unik dalam suatu wilayah. Dalam contoh ini, nilainya diatur ke test_qwen.

    Environment Information

    Deployment Method

    Dalam contoh ini, pilih Image-based Deployment dan Enable Web App.

    Image Configuration

    Pilih Image Address, masukkan eas-registry-vpc.cn-wulanchabu.cr.aliyuncs.com/pai-eas/chat-llm-webui:3.0.4-vllm di kolom tersebut.

    Directly Mount

    Klik Standard NAS dan konfigurasikan parameter berikut:

    • Select File System: sistem file NAS tujuan umum tempat set data dibuat.

    • Mount Target: titik pemasangan tempat set data dibuat.

    • File System Path: direktori model Hugging Face yang dikonversi yang disimpan di sistem file NAS. Dalam contoh ini, digunakan direktori /qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1.

    • Mount Path: direktori pemasangan model. Dalam contoh ini, nilainya diatur ke /qwen-7b.

    Command

    Dalam contoh ini, perintah berikut dijalankan: python webui/webui_server.py --port=8000 --model-path=/qwen-7b --tensor-parallel-size 1 --backend=vllm.

    Di mana:

    • --model-path: direktori pemasangan model, yang harus sama dengan yang ada di pengaturan model.

    • --tensor-parallel-size: ukuran paralelisme tensor, yang harus disesuaikan berdasarkan jumlah GPU. Misalnya, atur parameter ini ke 1 untuk model Qwen-7B atau 8 untuk model Qwen-72B.

    Port Number

    Dalam contoh ini, digunakan port 8000.

    Resource Information

    Resource Type

    Dalam contoh ini, dipilih Resource Quota.

    Resource Quota

    Pilih kuota sumber daya yang dibuat untuk sumber daya Lingjun yang dibeli.

    Instance Count

    Untuk model Qwen-7B, setiap instans menggunakan sumber daya berikut:

    • vCPUs: 16

    • Memory (GB): 64

    • GPUs: 1

    VPC configuration

    VPC

    Setelah Anda mengonfigurasi parameter NAS Mount Target, sistem secara otomatis mencocokkan virtual private cloud (VPC), vSwitch, dan grup keamanan dari sistem file NAS yang ditentukan.

    vSwitch

    Security Group Name

  4. Klik Deploy.

    Jika Service Status berubah menjadi Running, berarti layanan telah diterapkan.

Panggil layanan model

Setelah layanan model diterapkan, Anda dapat memanggil layanan tersebut untuk melakukan inferensi. Lakukan langkah-langkah berikut:

  1. Di tab Layanan Inferensi, temukan layanan yang ingin Anda panggil dan klik View Web App.

    image

  2. Di halaman WebUI, lakukan inferensi.