全部产品
Search
文档中心

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

更新时间:Nov 01, 2025

Topik ini bertujuan membantu pengembang model dasar memulai dengan Layanan Komputasi AI PAI-Lingjun dan mengembangkan model dasar Qwen-7B, Qwen-14B, dan Qwen-72B. Proses pengembangan mencakup pelatihan terdistribusi, fine-tuning, inferensi offline, serta penyebaran online. Contoh ini menggunakan model Qwen-7B untuk menjelaskan praktik terbaik dalam mengembangkan 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) diaktifkan, termasuk Data Science Workshop (DSW), Deep Learning Containers (DLC), dan Elastic Algorithm Service (EAS). Ruang kerja default juga harus dibuat. Untuk informasi lebih lanjut, lihat Aktifkan PAI dan buat ruang kerja default.

  • Sumber daya Lingjun telah dibeli, dan kuota sumber daya telah dibuat untuk sumber daya tersebut. Tabel berikut menjelaskan spesifikasi sumber daya yang didukung oleh jumlah parameter model yang berbeda. Pilih spesifikasi yang sesuai berdasarkan jumlah parameter model aktual Anda. Untuk informasi lebih lanjut tentang spesifikasi node dari sumber daya Lingjun, lihat bagian Harga node dari topik "Penagihan sumber daya Lingjun (Edisi Serverless)". Informasi tambahan dapat ditemukan di Buat grup 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

  • Dataset telah dibuat berdasarkan sistem file NAS tujuan umum dari File Storage NAS untuk menyimpan file dan hasil yang diperlukan untuk pelatihan. Direktori mount default adalah /mnt/data/nas. Untuk informasi lebih lanjut, lihat Buat dan kelola dataset.

  • Instans DSW telah dibuat berdasarkan parameter kunci berikut. Untuk informasi lebih lanjut, 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): 1024

      • Shared Memory (GiB): 1024

      • GPUs: minimal 8

    • Dataset Mounting: Klik Custom Dataset, pilih dataset yang dibuat, lalu tentukan direktori mount default.

    • Image: Klik Image Address dan masukkan URL citra 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 diberi izin yang diperlukan pada DSW, DLC, dan EAS jika Anda melakukan operasi dalam praktik terbaik ini sebagai pengguna RAM. Untuk informasi lebih lanjut, lihat Berikan izin yang diperlukan untuk menggunakan DSW, Berikan izin yang diperlukan untuk menggunakan DLC, dan Berikan izin yang diperlukan untuk menggunakan EAS.

Batasan

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

Langkah 1: Persiapkan 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 kiri, klik Workspaces. Di halaman Ruang Kerja, klik nama ruang kerja yang ingin Anda kelola.

    4. Di panel navigasi 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. Pada tab ini, klik Create 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 yang dikembalikan.

      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. Kode sampel berikut mengunduh paket model Qwen-7B:

    6. # ### Memuat Model dan 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')
      # Tampilkan direktori model yang diunduh.
      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 diunduh ke folder yang sesuai:

    9. # mkdir -p /mnt/workspace/qwen-ckpts/${Direktori ckpt dengan akhiran hf}
      mkdir -p /mnt/workspace/qwen-ckpts/qwen-7b-hf
      # cp -r ${Direktori model yang diunduh}/* /mnt/workspace/qwen-ckpts/${Direktori ckpt dengan akhiran hf}
      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, modifikasi kode contoh berikut sesuai dengan 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: Persiapkan data untuk pra-pelatihan

Kami merekomendasikan menyiapkan data yang digunakan untuk pra-pelatihan di instans DSW. Dalam contoh ini, dataset WuDaoCorpora 2.0 digunakan untuk menjelaskan cara memproses data untuk pelatihan berbasis Megatron. Dataset ini hanya digunakan untuk penelitian. Anda dapat langsung mengunduh data sampel skala kecil yang diproses oleh PAI atau menyiapkan data pra-pelatihan sendiri.

Gunakan data sampel skala kecil yang 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 secara mandiri

  1. Unduh dataset WuDaoCorpora 2.0 sumber terbuka ke direktori kerja /mnt/workspace/qwen-datasets. Dalam contoh ini, folder yang diekstraksi diberi nama wudao_200g.

    Data sampel skala kecil yang diproses oleh PAI juga bersumber dari dataset ini. Anda dapat menjalankan perintah berikut di tab Terminal DSW untuk mengunduh dan mendekompres dataset:

    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 membersihkan data pada dataset WuDaoCorpora 2.0, mengonversi format file, lalu menghasilkan file merged_wudao_cleaned.json:

    #! /bin/bash
    set -ex
    # Tentukan direktori dataset WuDaoCorpora 2.0. 
    data_dir=/mnt/workspace/qwen-datasets/wudao_200g
    
    # Mulai proses pembersihan data. 
    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
    # Setel opsi -k ke teks. 
    python preprocess_wudao2.py -i ${data_dir} -o ${dataset_dir}/cleaned_wudao_dataset -k text -p 32
    
    # Gabungkan data yang sudah dibersihkan. 
    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 sampel 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 grup dan kompres data setiap grup dengan memproses file merged_wudao_cleaned.json yang dihasilkan. Ini memfasilitasi multithreading dalam operasi selanjutnya.

    apt-get update
    apt-get install zstd
    
    # Bagi data menjadi 10 grup. Jika pemrosesan data lambat, Anda dapat membagi data menjadi lebih banyak grup. 
    NUM_PIECE=10
    
    # Proses file merged_wudao_cleaned.json.
    mkdir -p ${dataset_dir}/cleaned_zst/
    # Kueri panjang total data dan bagi data tersebut. 
    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/
    
    # Kompres data setiap grup. 
    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 sampel 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 dataset yang digunakan untuk pra-pelatihan dalam format MMAP.

    MMAP adalah format file di mana data ditokenisasi sebelumnya. Ini mengurangi waktu yang diperlukan untuk membaca data dari dataset selama pelatihan dan fine-tuning, terutama ketika Anda memproses sejumlah besar data. 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 /mnt/workspace/ DSW:

      cd /mnt/workspace/
      # Metode 1: Dapatkan kode sumber alat pelatihan dari GitHub. 
      git clone --recurse-submodules https://github.com/alibaba/Pai-Megatron-Patch.git
      # Metode 2: Dapatkan kode sumber alat pelatihan dengan menjalankan perintah wget. Lalu jalankan perintah tar zxvf Pai-Megatron-Patch.tgz untuk mendekompres file yang diunduh. 
      wget https://atp-modelzoo.oss-cn-hangzhou.aliyuncs.com/release/models/Pai-Megatron-Patch.tgz
    2. Jalankan perintah berikut di tab Terminal untuk mengonversi dataset ke format MMAP:

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

      # Instal pustaka tokenizer tempat Qwen bergantung. 
      pip install tiktoken
      # Tentukan direktori dataset dan direktori kerja. 
      export dataset_dir=/mnt/workspace/qwen-datasets
      export WORK_DIR=/mnt/workspace
      
      # Hasilkan set pelatihan dan validasi yang digunakan untuk pra-pelatihan dalam format MMAP. 
      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 dataset WuDaoCorpora 2.0 yang telah diproses dan dikemas.

      tokenizer=$4

      Tipe 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 sampel 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 melaksanakan pelatihan berbasis Megatron:

Konversi format model

Anda harus mengonversi format model dari Hugging Face ke Megatron.

Unduh model Megatron yang 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 untuk mengonversi format model dari Hugging Face ke Megatron:

# Konversi format model. 
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 dikonversi.

TP=$4

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

  • Qwen-7B: 1

  • Qwen-14B: 2

  • Qwen-72B: 8

PP=$5

Ukuran paralelisme pipeline, yang harus sama dengan ukuran untuk pelatihan. Ukuran bervariasi berdasarkan jumlah parameter model. Anda harus mengubah ukuran saat Anda 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.

Pra-latih model

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

Jalankan pekerjaan mandiri untuk pra-latih model di DSW

Kode sampel berikut menjalankan pekerjaan mandiri 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 valid:

  • dsw

  • dlc

MEGATRON_PATH=$2

Direktori kode sumber alat pelatihan berbasis Megatron.

MODEL_SIZE=$3

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

BATCH_SIZE=$4

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

GLOBAL_BATCH_SIZE=$5

Jumlah total sampel untuk iterasi pelatihan.

LR=$6

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

MIN_LR=$7

Tingkat pembelajaran minimum. Nilai 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 bervariasi berdasarkan jumlah parameter model.

  • Qwen-7B: 85

  • Qwen-14B: 213

  • Qwen-72B: 213

PR=${11}

Precisi pelatihan. Nilai valid: fp16 dan bf16.

TP=${12}

Ukuran paralelisme tensor.

PP=${13}

Ukuran paralelisme pipeline.

AC=${14}

Mode checkpoint aktivasi. Nilai valid:

  • full

  • sel

DO=${15}

Menentukan apakah menggunakan optimizer ZeRO-1 untuk Megatron. Nilai valid:

  • true

  • false

FL=${16}

Menentukan apakah mengaktifkan Flash Attention. Nilai valid:

  • true

  • false

SP=${17}

Menentukan apakah menggunakan paralelisme urutan. Nilai valid:

  • true

  • false

TE=${18}

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

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 pra-latih model di DLC

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

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

    Parameter

    Deskripsi

    Basic Information

    Job Name

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

    Environment Information

    Node Image

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

    Data Set

    Klik Custom Dataset dan konfigurasikan parameter berikut:

    • Custom Dataset: Pilih dataset 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 mandiri 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:

    • Number of Nodes: Masukkan 2. Jika Anda ingin melatih model pada lebih banyak server, Anda dapat meningkatkan nilai parameter Number of 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.

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

Lakukan supervised fine-tuning

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

  1. Sebelum Anda melakukan fine-tuning model, buka Langkah 2: Persiapkan data untuk pra-pelatihan. Gunakan kode sampel pada tab Gunakan data sampel skala kecil yang diproses oleh PAI untuk mengunduh file JSON.

  2. Fine-tune model.

    Jalankan pekerjaan mandiri untuk fine-tune model di DSW

    Kode sampel berikut menjalankan pekerjaan mandiri 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 valid:

    • dlc

    • dsw

    MEGATRON_PATH=$2

    Direktori kode sumber alat pelatihan berbasis Megatron.

    MODEL_SIZE=$3

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

    BATCH_SIZE=$4

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

    GLOBAL_BATCH_SIZE=$5

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

    LR=$6

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

    MIN_LR=$7

    Tingkat pembelajaran minimum. Nilai 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 bervariasi berdasarkan jumlah parameter model.

    • Qwen-7B: 85

    • Qwen-14B: 213

    • Qwen-72B: 213

    PR=${11}

    Precisi pelatihan. Nilai valid: fp16 dan bf16.

    TP=${12}

    Ukuran paralelisme tensor.

    PP=${13}

    Ukuran paralelisme pipeline.

    AC=${14}

    Mode checkpoint aktivasi. Nilai valid: full dan sel.

    DO=${15}

    Menentukan apakah menggunakan optimizer ZeRO-1 untuk Megatron. Nilai valid:

    • true

    • false

    FL=${16}

    Menentukan apakah mengaktifkan Flash Attention. Nilai valid:

    • true

    • false

    SP=${17}

    Menentukan apakah menggunakan paralelisme urutan. Nilai valid:

    • true

    • false

    TE=${18}

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

    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 Anda melakukan fine-tuning model di DSW, Anda dapat mengonfigurasi pekerjaan terdistribusi untuk fine-tune model pada beberapa server multi-GPU di DLC. Saat Anda mengirimkan pekerjaan pelatihan di DLC, masukkan perintah berikut untuk parameter Startup Command. Untuk informasi lebih lanjut tentang parameter lainnya, lihat bagian Pra-latih model dari 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 mandiri 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 lebih lanjut, lihat Unggah dan unduh file.

    Catatan

    Data yang digunakan untuk inferensi harus diorganisir 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 ditempatkan di direktori {OUTPUT_BASEPATH }/checkpoint dan di 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 di file /mnt/workspace/qwen_pred.txt. Anda dapat mengevaluasi efek model berdasarkan hasil inferensi.

    Catatan

    Sebelum menjalankan perintah, Anda harus mengatur parameter CUDA_VISIBLE_DEVICES ke 0 dan parameter GPUS_PER_NODE ke 1 di 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 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 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 valid: 1, 4, dan 8.

    SEQ_LEN=$7

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

    PAD_LEN=$8

    Panjang urutan padding, yaitu panjang teks yang digabungkan.

    EXTRA_VOCAB_SIZE=${9}

    Jumlah token yang bertambah selama konversi model. Jumlah bervariasi berdasarkan jumlah parameter model.

    • Qwen-7B: 85

    • Qwen-14B: 213

    • Qwen-72B: 213

    PR=${10}

    Precisi inferensi. Nilai valid: fp16 dan bf16.

    TOP_K=${11}

    Jumlah kata kandidat teratas yang dipilih. Nilai 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, file pred_input.jsonl digunakan, di mana setiap baris berisi satu sampel.

    OUTPUT_FILE=${15}

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

    TOP_P=${16}

    Persentase kata kandidat teratas yang dipilih. Nilai 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}

    Kerandoman proses sampling. Nilai valid: 1 hingga n.

    REPETITION_PENALTY=${18}

    Penalti pengulangan konten yang dihasilkan oleh model. Nilai valid: 1 hingga 2. Nilai default: 1.2.

Langkah 5: Konversi format model

Jika efek model memenuhi harapan Anda setelah inferensi offline dilakukan menggunakan model, Anda dapat mengonversi format model dari Megatron ke Hugging Face. Lalu, Anda dapat menyebarkan 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/${Direktori}/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 ukuran saat pelatihan.

    PP=$5

    Ukuran paralelisme pipeline, yang harus sama dengan ukuran saat pelatihan.

    MN=$6

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

    EXTRA_VOCAB_SIZE=$7

    Ukuran kosakata tambahan.

    mg2hf=$8

    Menentukan apakah mengonversi format model dari Megatron ke Hugging Face.

  2. Salin file .json, .py, dan .tiktoken di direktori /mnt/workspace/qwen-ckpts/qwen-7b-hf model Hugging Face sumber terbuka ke direktori /mnt/workspace/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1 untuk memastikan bahwa 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. Sebagai contoh, 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 = 'Tulis algoritma quick sorting.'
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, direktori /mnt/workspace/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1 digunakan.

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

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

Sebarkan model sebagai layanan model

  1. Masuk ke Konsol PAI. Pilih wilayah di bagian atas halaman. Lalu, 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 di wilayah tertentu. 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 bidang.

    Mount storage

    Pilih General-purpose NAS, klik General NAS dan konfigurasikan parameter berikut:

    • File System: sistem file NAS tujuan umum tempat dataset dibuat.

    • Mount Target: titik mount tempat dataset dibuat.

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

    • Mount Path: jalur mount 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.

    Dimana:

    • --model-path: jalur mount model, yang harus sama dengan yang diatur dalam 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, port 8000 digunakan.

    Resource Information

    Resource Type

    Dalam contoh ini, Resource Quota dipilih.

    Resource Quota

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

    Instances

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

    • vCPUs: 16

    • Memory (GB): 64

    • GPUs: 1

    VPC configuration

    VPC

    Setelah Anda mengonfigurasi parameter Titik Mount NAS, 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 status layanan berubah menjadi Running, layanan telah disebarkan.

Panggil layanan model

Setelah layanan model disebarkan, 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.