All Products
Search
Document Center

Platform For AI:Qwen yang sepenuhnya dikelola di Lingjun

Last Updated:Mar 06, 2026

Panduan ini membantu pengembang model bahasa besar (LLM) memulai Platform Lingjun Intelligent Computing. Anda akan mempelajari alur kerja pengembangan lengkap untuk LLM Qwen, seperti Qwen-7B, Qwen-14B, dan Qwen-72B, yang mencakup pelatihan terdistribusi yang efisien, penyetelan instruksi tiga tahap, inferensi model offline, serta penerapan layanan online. Panduan ini menggunakan model Qwen-7B sebagai contoh untuk mendemonstrasikan proses tersebut.

Prasyarat

Panduan ini menggunakan model Qwen-7B v1.1.4 sebagai contoh. Sebelum memulai, selesaikan persiapan berikut:

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

  • Beli Sumber daya Lingjun dan buat kuota sumber daya. Tabel berikut mencantumkan spesifikasi sumber daya yang didukung untuk ukuran model yang berbeda. Pilih sumber daya yang sesuai berdasarkan ukuran model yang Anda gunakan. Untuk informasi selengkapnya tentang spesifikasi node Sumber daya Lingjun, lihat Detail harga Lingjun Serverless. Untuk informasi selengkapnya tentang cara membeli sumber daya dan membuat kuota, lihat Buat kelompok sumber daya dan beli Sumber daya Lingjun dan Buat kuota sumber daya.

    Ukuran model

    Sumber daya pelatihan parameter penuh

    Sumber daya inferensi (minimum)

    Segmen Model Pelatihan Megatron

    7B

    8 × GPU gu7xf, 8 × GPU gu7ef

    1 × V100 (VRAM 32 GB), 1 × A10 (VRAM 24 GB)

    TP: 1, PP: 1

    14B

    8 × GPU gu7xf, 8 × GPU gu7ef

    2 × V100 (VRAM 32 GB), 2 × A10 (VRAM 24 GB)

    TP: 2, PP: 1

    72B

    4 × 8 GPU gu7xf, 4 × 8 GPU gu7ef

    6 × V100 (VRAM 32 GB), 2 × GPU gu7xf

    TP: 8, PP: 2

  • Buat dataset sistem file NAS tujuan umum untuk menyimpan file pelatihan dan hasilnya. Konfigurasikan path mount default ke /mnt/data/nas. Untuk informasi selengkapnya, lihat Buat dan kelola dataset.

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

    • Resource Quota: Pilih kuota sumber daya yang Anda buat untuk Sumber daya Lingjun.

    • 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 Anda buat, dan gunakan path mount default.

    • Image Configuration: Pada tab Image Address, atur citra runtime ke pai-image-manage-registry.cn-wulanchabu.cr.aliyuncs.com/pai/pytorch-training:1.12-ubuntu20.04-py3.10-cuda11.3-megatron-patch-llm.

  • Jika Anda menggunakan Pengguna Resource Access Management (RAM) untuk melakukan operasi ini, berikan izin yang diperlukan kepada Pengguna RAM untuk DSW, DLC, atau EAS. Untuk informasi selengkapnya, lihat Ketergantungan dan izin produk cloud: DSW, Ketergantungan dan izin produk cloud: DLC, atau Ketergantungan dan izin produk cloud: EAS.

Batasan

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

Langkah 1: Siapkan model Qwen

Panduan ini menyediakan tiga cara untuk mengunduh model. Ikuti langkah-langkah berikut:

  1. Masuk ke lingkungan pengembangan PAI DSW.

    1. Masuk ke Konsol PAI.

    2. Di pojok kiri atas halaman, pilih wilayah tempat Anda ingin menggunakan layanan: China (Ulanqab).

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

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

    5. Di kolom Actions instans target, klik Open.

  2. Di bilah menu atas, klik Terminal. Di tab yang muncul, klik create a terminal.

  3. Unduh model Qwen.

    Unduh model dari komunitas ModelScope

    1. Di Terminal, jalankan perintah berikut untuk menginstal ModelScope.

    2. pip install modelscope

      Klik untuk melihat output. Anda dapat mengabaikan pesan WARNING dalam hasilnya.

      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 berikut menunjukkan cara mengunduh file model untuk 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')
      # Dapatkan path unduhan.
      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 Qwen yang telah diunduh ke folder yang sesuai.

    9. # mkdir -p /mnt/workspace/qwen-ckpts/${ckpt_folder_with_hf_suffix}
      mkdir -p /mnt/workspace/qwen-ckpts/qwen-7b-hf
      # cp -r ${path_to_downloaded_model}/* /mnt/workspace/qwen-ckpts/${ckpt_folder_with_hf_suffix}
      cp -r /root/.cache/modelscope/hub/qwen/Qwen-7B/* /mnt/workspace/qwen-ckpts/qwen-7b-hf

    Unduh model dari komunitas HuggingFace

    Di Terminal DSW, jalankan perintah berikut untuk mengunduh file model. Panduan ini menggunakan model Qwen-7B sebagai contoh. Untuk mengunduh file model Qwen-14B atau Qwen-72B, modifikasi kode berikut sesuai kebutuhan.

    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 pra-pelatihan

Kami menyarankan agar Anda menyiapkan data pra-pelatihan di instans DSW. Panduan ini menggunakan dataset WuDaoCorpora2.0, yang hanya untuk tujuan penelitian, sebagai contoh untuk menunjukkan alur kerja pra-pemrosesan data untuk pelatihan Megatron. Anda dapat mengunduh data sampel skala kecil yang disiapkan oleh PAI atau menyiapkan data pra-pelatihan sendiri dengan mengikuti langkah-langkah berikut.

Gunakan data sampel skala kecil yang diproses oleh PAI

Untuk membantu Anda mencoba solusi ini, PAI menyediakan data sampel skala kecil yang telah diproses. Anda dapat menjalankan perintah berikut di Terminal DSW untuk mengunduh data sampel tersebut.

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 dataset open source WuDaoCorpora2.0 ke direktori kerja /mnt/workspace/qwen-datasets. Dalam panduan ini, folder yang diekstrak diberi nama wudao_200g.

    PAI menyediakan data sampel untuk demonstrasi. Anda dapat menjalankan perintah berikut di Terminal DSW untuk mengunduh dan mengekstrak dataset tersebut.

    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. Di Terminal, jalankan perintah berikut untuk melakukan pembersihan data dan konversi format file pada data Wudao. Ini menghasilkan file merged_wudao_cleaned.json yang digabungkan.

    #! /bin/bash
    set -ex
    # Atur path tempat data mentah disimpan.
    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
    # Berbeda dengan bagian sebelumnya, parameter kunci ditambahkan dan diatur ke text.
    python preprocess_wudao2.py -i ${data_dir} -o ${dataset_dir}/cleaned_wudao_dataset -k text -p 32
    
    # Gabungkan data yang telah 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
    

    Setelah perintah dijalankan, struktur file direktori qwen-datasets adalah sebagai berikut. Folder wudao baru ditambahkan.

    qwen-datasets
    ├── wudao_200g 
    └── wudao
        └── merged_wudao_cleaned.json
  3. Di Terminal, jalankan perintah berikut untuk membagi file merged_wudao_cleaned.json menjadi beberapa grup dan mengompresnya. Hal ini memfasilitasi multithreading pada langkah-langkah selanjutnya.

    apt-get update
    apt-get install zstd
    
    # Jumlah chunk diatur ke 10. Anda dapat meningkatkan nilai ini jika pemrosesan data lambat.
    NUM_PIECE=10
    
    # Proses file merged_wudao_cleaned.json.
    mkdir -p ${dataset_dir}/cleaned_zst/
    # Kueri total panjang 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 tersebut.
    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
    

    Setelah perintah dijalankan, struktur file direktori qwen-datasets adalah sebagai berikut. Folder baru cleaned_zst ditambahkan, yang berisi 10 file terkompresi.

    qwen-datasets
    ├── wudao_200g
    ├── wudao
    └── cleaned_zst
        ├── 00.jsonl.zst
    		│   ...
        └── 09.jsonl.zst
  4. Buat dataset pra-pelatihan dalam format MMAP.

    MMAP adalah format data yang telah ditokenisasi sebelumnya yang mengurangi waktu tunggu pembacaan data selama pelatihan dan fine-tuning. Hal ini sangat menguntungkan saat memproses data berskala besar. Ikuti langkah-langkah berikut:

    1. Di Terminal DSW, jalankan perintah berikut untuk menyalin kode sumber PAI-Megatron-Patch, yaitu alat pelatihan model untuk Megatron, ke direktori kerja DSW /mnt/workspace/.

      cd /mnt/workspace/
      # Metode 1: Dapatkan kode pelatihan dari situs web open source.
      git clone --recurse-submodules https://github.com/alibaba/Pai-Megatron-Patch.git
      # Metode 2: Dapatkan kode pelatihan menggunakan wget. Anda perlu menjalankan tar zxvf Pai-Megatron-Patch.tgz untuk mengekstrak file tersebut.
      wget https://atp-modelzoo.oss-cn-hangzhou.aliyuncs.com/release/models/Pai-Megatron-Patch.tgz
    2. Di Terminal, jalankan perintah berikut untuk mengonversi data ke format MMAP.

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

      # Instal library tokenizer yang dibutuhkan oleh Qwen.
      pip install tiktoken
      # Atur path dataset dan direktori kerja.
      export dataset_dir=/mnt/workspace/qwen-datasets
      export WORK_DIR=/mnt/workspace
      
      # Hasilkan dataset pra-pelatihan dalam format MMAP untuk set pelatihan dan validasi.
      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 awal untuk menjalankan skrip run_make_pretraining_dataset.sh.

      Parameter

      Deskripsi

      MEGATRON_PATH=$1

      Path kode Megatron open source.

      MEGATRON_PATCH_PATH=$2

      Path kode Megatron Patch.

      input_data_dir=$3

      Path folder yang berisi dataset WuDao yang telah dikemas.

      tokenizer=$4

      Jenis tokenizer. Atur ke qwenbpe.

      output_data_dir=$5

      Path untuk menyimpan file output .bin dan .idx.

      load_dir=$6

      Path file tokenizer_config.json yang dihasilkan.

      Setelah skrip dijalankan, struktur file direktori qwen-datasets adalah sebagai berikut.

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

Langkah 3: Latih model dengan Megatron

Anda dapat melatih model dengan Megatron dengan mengikuti langkah-langkah berikut.

Konversi format model

Konversi file model HuggingFace ke format Megatron.

Unduh model Megatron yang telah dikonversi

Untuk membantu Anda mencoba solusi ini, PAI menyediakan model yang formatnya telah dikonversi. Anda dapat menjalankan perintah berikut di Terminal untuk mengunduh model tersebut.

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 model HuggingFace ke format Megatron

Di Terminal, jalankan perintah berikut untuk menggunakan alat konversi model yang disediakan oleh PAI guna mengonversi file model HuggingFace ke format Megatron:

# Konversi 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 untuk menjalankan skrip model_convertor.sh.

Parameter

Deskripsi

MEGATRON_PATH=$1

Path kode Megatron open source.

SOURCE_CKPT_PATH=$2

Path file model HuggingFace.

TARGET_CKPT_PATH=$3

Path untuk menyimpan model Megatron yang telah dikonversi.

TP=$4

Jumlah shard paralelisme tensor. Nilai ini harus sama dengan jumlah yang digunakan untuk pelatihan. Jumlah shard bervariasi berdasarkan ukuran model. Modifikasi parameter ini sesuai kebutuhan saat mengonversi model:

  • Qwen-7B: 1.

  • Qwen-14B: 2.

  • Qwen-72B: 8.

PP=$5

Jumlah shard paralelisme pipeline. Nilai ini harus sama dengan jumlah yang digunakan untuk pelatihan. Jumlah shard bervariasi berdasarkan ukuran model. Modifikasi parameter ini sesuai kebutuhan saat mengonversi model:

  • Qwen-7B: 1.

  • Qwen-14B: 1.

  • Qwen-72B: 2.

MN=$6

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

EXTRA_VOCAB_SIZE=$7

Ukuran kosakata tambahan.

mg2hf=$8

Menentukan apakah akan mengonversi model Megatron ke model HuggingFace.

Model pra-latih

Anda dapat melakukan pra-pelatihan model di satu instans DSW atau mengirimkan tugas pelatihan terdistribusi dengan server multi-GPU di lingkungan DLC. Proses pelatihan memakan waktu sekitar dua jam. Setelah tugas berhasil, file model disimpan ke direktori /mnt/workspace/output_megatron_qwen/.

Model pra-latih standalone DSW

Kode berikut menunjukkan contoh cara menjalankan perintah untuk model Qwen-7B di 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 untuk menjalankan skrip run_pretrain_megatron_qwen.sh.

Parameter

Deskripsi

ENV=$1

Lingkungan eksekusi:

  • dsw

  • dlc

MEGATRON_PATH=$2

Jalur kode sumber terbuka Megatron.

MODEL_SIZE=$3

Ukuran model: 7B, 14B, atau 72B.

BATCH_SIZE=$4

Jumlah sampel untuk satu iterasi pelatihan pada setiap GPU: 4 atau 8.

GLOBAL_BATCH_SIZE=$5

Total jumlah sampel pelatihan.

LR=$6

Tingkat pembelajaran: 1e-5 atau 5e-5.

MIN_LR=$7

Tingkat pembelajaran minimum: 1e-6 atau 5e-6.

SEQ_LEN=$8

Panjang sekuens.

PAD_LEN=${9}

Panjang padding.

EXTRA_VOCAB_SIZE=${10}

Ukuran kosakata tambahan:

  • Qwen-7B: 85.

  • Qwen-14B: 213.

  • Qwen-72B: 213.

PR=${11}

Precisi pelatihan: fp16 atau bf16.

TP=${12}

Tingkat paralelisme model.

PP=${13}

Tingkat paralelisme pipeline.

AC=${14}

Mode activation checkpointing:

  • full

  • sel

DO=${15}

Menentukan apakah akan menggunakan optimizer Zero-1 versi Megatron untuk mengurangi penggunaan VRAM:

  • true

  • false

FL=${16}

Menentukan apakah akan mengaktifkan Flash Attention:

  • true

  • false

SP=${17}

Menentukan apakah akan menggunakan sequence parallelism:

  • true

  • false

TE=${18}

Menentukan apakah akan mengaktifkan akselerasi Transformer-engine. Fitur ini memerlukan GPU gu8xf.

SAVE_INTERVAL=${19}

Interval penyimpanan file checkpoint.

DATASET_PATH=${20}

Path dataset pelatihan.

PRETRAIN_CHECKPOINT_PATH=${21}

Path model pra-latih.

TRAIN_TOKENS=${22}

Token pelatihan

WARMUP_TOKENS=${23}

Jumlah token warmup.

OUTPUT_BASEPATH=${24}

Path untuk menyimpan file model output.

Model Pra-latih Terdistribusi DLC

Setelah debugging pada satu instans, Anda dapat mengonfigurasi tugas terdistribusi dengan server multi-GPU di lingkungan DLC. Ikuti 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 kunci berikut dan biarkan nilai default untuk parameter lainnya. Untuk informasi selengkapnya, lihat Buat tugas pelatihan.

    Parameter

    Deskripsi

    Basic Information

    Job Name

    Masukkan nama tugas kustom. Panduan ini menggunakan test_qwen_dlc.

    Environment Information

    Image Configuration

    Pilih Image Address dan masukkan pai-image-manage-registry.cn-wulanchabu.cr.aliyuncs.com/pai/pytorch-training:1.12-ubuntu20.04-py3.10-cuda11.3-megatron-patch-llm di kotak teks.

    Mount dataset

    Klik Custom Dataset dan konfigurasikan parameter berikut:

    • Custom Dataset: Pilih dataset NAS yang Anda buat.

    • Mount Path: Atur ke /mnt/workspace/.

    Startup Command

    Konfigurasikan perintah berikut. Parameter awal untuk skrip run_pretrain_megatron_qwen.sh sama dengan yang digunakan untuk pra-pelatihan model pada satu instans 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 Intelligent Computing.

    Source

    Pilih Resource Type.

    Resource Type

    Pilih kuota sumber daya yang Anda buat untuk Sumber daya Lingjun.

    Framework

    Pilih PyTorch.

    Job Resource

    Konfigurasikan parameter berikut untuk node Worker:

    • Nodes: 2. Untuk melakukan pelatihan multi-node, atur Nodes ke jumlah mesin yang diperlukan.

    • GPUs: 8

    • vCPUs: 90

      Catatan

      Jumlah core CPU tidak boleh melebihi 96.

    • Memory (GiB): 1024

    • Shared Memory (GiB): 1024

  3. Klik OK. Halaman secara otomatis beralih ke halaman Deep Learning Containers (DLC). Ketika Status berubah menjadi Succeeded, tugas pelatihan berhasil.

Fine-tune model dengan Supervised Learning

Anda dapat melakukan fine-tuning model di satu instans DSW atau mengirimkan tugas terdistribusi dengan server multi-GPU di lingkungan DLC. Proses pelatihan memakan waktu sekitar dua jam. Setelah tugas berhasil, file model disimpan ke direktori /mnt/workspace/output_megatron_qwen/.

  1. Sebelum melakukan fine-tuning model, buka bagian Langkah 2: Siapkan data pra-pelatihan. Di tab Gunakan data sampel skala kecil yang diproses oleh PAI, unduh file JSON menggunakan kode yang disediakan.

  2. Lakukan fine-tuning model.

    Fine-tune model pada satu instans DSW

    Kode berikut menunjukkan contoh cara menjalankan perintah untuk model Qwen-7B di 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 untuk menjalankan skrip run_finetune_megatron_qwen_withGA.sh.

    Parameter

    Deskripsi

    ENV=$1

    Lingkungan eksekusi:

    • dlc

    • dsw

    MEGATRON_PATH=$2

    Path kode Megatron open source.

    MODEL_SIZE=$3

    Ukuran model: 7B, 14B, atau 72B.

    BATCH_SIZE=$4

    Jumlah sampel untuk satu iterasi pelatihan pada setiap GPU: 1, 2, 4, atau 8.

    GLOBAL_BATCH_SIZE=$5

    Total jumlah sampel untuk satu iterasi fine-tuning: 64, 96, atau 128.

    LR=$6

    Tingkat pembelajaran: 1e-5 atau 5e-5.

    MIN_LR=$7

    Tingkat pembelajaran minimum: 1e-6 atau 5e-6.

    SEQ_LEN=$8

    Panjang sekuens.

    PAD_LEN=$9

    Panjang sekuens padding.

    EXTRA_VOCAB_SIZE=${10}

    Ukuran kosakata tambahan:

    • Qwen-7B: 85.

    • Qwen-14B: 213.

    • Qwen-72B: 213.

    PR=${11}

    Precisi pelatihan: fp16 atau bf16.

    TP=${12}

    Tingkat paralelisme model.

    PP=${13}

    Tingkat paralelisme pipeline.

    AC=${14}

    Mode activation checkpointing: full atau sel.

    DO=${15}

    Menentukan apakah akan menggunakan optimizer Zero-1 versi Megatron untuk mengurangi penggunaan VRAM:

    • true

    • false

    FL=${16}

    Menentukan apakah akan mengaktifkan Flash Attention:

    • true

    • false

    SP=${17}

    Menentukan apakah akan menggunakan sequence parallelism:

    • true

    • false

    TE=${18}

    Menentukan apakah akan mengaktifkan akselerasi Transformer-engine. Fitur ini memerlukan GPU gu8xf.

    SAVE_INTERVAL=${19}

    Interval langkah untuk menyimpan model.

    DATASET_PATH=${20}

    Path dataset pelatihan.

    VALID_DATASET_PATH=${21}

    Jalur set validasi.

    PRETRAIN_CHECKPOINT_PATH=${22}

    Path model pra-latih.

    TRAIN_ITERS=${23}

    Jumlah iterasi pelatihan.

    LR_WARMUP_ITERS=${24}

    Langkah di mana tingkat pembelajaran meningkat paling besar.

    OUTPUT_BASEPATH=${25}

    Path untuk menyimpan file model output.

    Fine-tune model dengan pelatihan terdistribusi di DLC

    Setelah debugging di satu instans DSW, Anda dapat mengonfigurasi tugas terdistribusi dengan server multi-GPU di lingkungan DLC. Saat mengirimkan tugas pelatihan DLC, konfigurasikan Startup Command sebagai berikut. Untuk informasi tentang pengaturan parameter lainnya, lihat Langkah 2: Pra-latih model.

    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 untuk menjalankan skrip run_finetune_megatron_qwen_withGA.sh sama dengan yang digunakan untuk fine-tuning model pada satu instans DSW.

Langkah 4: Lakukan inferensi offline

Setelah pelatihan model selesai, Anda dapat menggunakan pipeline inferensi Megatron untuk melakukan inferensi offline dan mengevaluasi kinerja model. Ikuti langkah-langkah berikut:

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

    Catatan

    Struktur data untuk inferensi harus konsisten dengan struktur data yang digunakan untuk fine-tuning.

  2. Salin semua file JSON dan file tokenizer.model dari path model pra-latih ke path model yang dihasilkan. Path model yang dihasilkan adalah subdirektori di bawah {OUTPUT_BASEPATH }/checkpoint dan berada pada level yang sama dengan latest_checkpointed_iteration.txt.

    Catatan

    Ganti path dalam perintah dengan path 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. Di Terminal, jalankan perintah berikut untuk melakukan inferensi offline. Hasil inferensi disimpan ke file /mnt/workspace/qwen_pred.txt. Anda dapat mengevaluasi kinerja model berdasarkan hasil 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 awal untuk skrip run_text_generation_megatron_qwen.sh.

    Parameter

    Deskripsi

    ENV=$1

    Lingkungan eksekusi:

    • dlc

    • dsw

    MEGATRON_PATCH_PATH=$2

    Path kode Megatron Patch.

    CHECKPOINT_PATH=$3

    Path tempat model disimpan selama fase pelatihan.

    Penting

    Ganti ini dengan path model Anda.

    MODEL_SIZE=$4

    Ukuran model: 7B, 14B, atau 72B.

    TP=$5

    Tingkat paralelisme model.

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

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

    BS=$6

    Jumlah sampel untuk satu iterasi inferensi pada setiap GPU: 1, 4, atau 8.

    SEQ_LEN=$7

    Panjang sekuens: 256, 512, atau 1024.

    PAD_LEN=$8

    Panjang PAD: Panjang teks yang dipadding.

    EXTRA_VOCAB_SIZE=${9}

    Jumlah token yang ditambahkan selama konversi model:

    • Qwen-7B: 85.

    • Qwen-14B: 213.

    • Qwen-72B: 213.

    PR=${10}

    Precisi yang digunakan untuk inferensi: fp16 atau bf16.

    TOP_K=${11}

    Jumlah token kosakata dengan probabilitas tertinggi yang dipertahankan untuk top-k-filtering (0 hingga n): 0, 5, 10, atau 20.

    INPUT_SEQ_LEN=${12}

    Panjang sekuens input: 512.

    OUTPUT_SEQ_LEN=${13}

    Panjang sekuens output: 256.

    INPUT_FILE=${14}

    File teks untuk inferensi: pred_input.jsonl. Setiap baris adalah satu sampel.

    OUTPUT_FILE=${15}

    File output untuk inferensi: qwen_pred.txt.

    TOP_P=${16}

    Probabilitas kumulatif untuk top-p-filtering (0 hingga 1): 0, 0.85, atau 0.95.

    Catatan

    Hanya salah satu dari TOP_K dan TOP_P yang dapat bernilai bukan nol.

    TEMPERATURE=${17}

    Penalti temperatur dalam (sampling)(policy): 1–n.

    REPETITION_PENALTY=${18}

    Penalti untuk pengulangan. Nilainya berkisar antara 1 hingga 2. Nilai default adalah 1.2.

Langkah 5: Konversi format model

Setelah menyelesaikan inferensi offline, jika kinerja model memenuhi ekspektasi Anda, Anda dapat mengonversi model Megatron yang telah dilatih ke format HuggingFace. Anda kemudian dapat menggunakan model HuggingFace yang dikonversi untuk penerapan layanan online. Ikuti langkah-langkah berikut:

  1. Di Terminal, jalankan perintah berikut untuk mengonversi model Megatron yang telah dilatih ke format HuggingFace.

    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/${path}/iter_*******         \
    /mnt/workspace/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1/  \
    1  \
    1  \
    qwen-7b \
    0 \
    true

    Tabel berikut menjelaskan parameter untuk menjalankan skrip model_convertor.sh.

    Parameter

    Deskripsi

    MEGATRON_PATH=$1

    Path kode Megatron open source.

    SOURCE_CKPT_PATH=$2

    Path model Megatron yang diperoleh dari pelatihan. Path harus spesifik ke direktori 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 ini dengan path model Anda.

    • Jika Anda menggunakan model pra-latih untuk konversi, hapus semua file distrib_optim.pt dari path model.

    TARGET_CKPT_PATH=$3

    Path untuk menyimpan model HuggingFace yang dikonversi.

    TP=$4

    Jumlah shard paralelisme tensor. Nilai ini harus sama dengan jumlah yang digunakan untuk pelatihan.

    PP=$5

    Jumlah shard paralelisme pipeline. Nilai ini harus sama dengan jumlah yang digunakan untuk pelatihan.

    MN=$6

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

    EXTRA_VOCAB_SIZE=$7

    Ukuran kosakata tambahan.

    mg2hf=$8

    Menentukan apakah akan mengonversi model Megatron ke model HuggingFace.

  2. Salin file .json, .py, dan .tiktoken dari folder model HuggingFace 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.

    Penting

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

Lakukan inferensi offline pada model HuggingFace

Anda dapat menggunakan pipeline inferensi HuggingFace & DeepSpeed untuk melakukan inferensi offline pada file model HuggingFace yang telah dikonversi. Mengambil model Qwen-7B sebagai contoh, buat file infer.py di direktori apa pun di Terminal dengan konten berikut. Jalankan file infer.py untuk melakukan inferensi offline dan evaluasi kinerja model berdasarkan hasilnya.

#!/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 quicksort 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 path tempat file model HuggingFace yang dikonversi disimpan. Panduan ini menggunakan /mnt/workspace/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1.

Langkah 6: Deploy dan panggil layanan model

Setelah menyelesaikan inferensi offline dan mengevaluasi kinerja model, Anda dapat menerapkan model HuggingFace yang dikonversi sebagai layanan online dan memanggilnya di lingkungan produksi untuk inferensi. Ikuti langkah-langkah berikut:

Deploy 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 kunci berikut dan biarkan nilai default untuk parameter lainnya.

    Parameter

    Deskripsi

    Basic Information

    Service Name

    Masukkan nama layanan model kustom yang unik dalam wilayah tersebut. Panduan ini menggunakan test_qwen.

    Environment Information

    Deployment Method

    Pilih Image-based Deployment dan pilih Enable Web App.

    Image Configuration

    Pilih Image Address dan masukkan alamat registri berikut di kotak teks: eas-registry-vpc.cn-wulanchabu.cr.aliyuncs.com/pai-eas/chat-llm-webui:3.0.4-vllm.

    Directly Mount

    Pilih NAS sebagai jenis mount. Klik Standard NAS dan konfigurasikan parameter berikut:

    • Select File System: Pilih sistem file NAS yang Anda gunakan untuk membuat dataset.

    • Mount Target: Pilih titik pemasangan yang Anda gunakan untuk membuat dataset.

    • File System Path: Atur ke path model HuggingFace yang dikonversi yang disimpan di NAS. Panduan ini menggunakan /qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1.

    • Mount Path: Tentukan path setelah pemasangan. Panduan ini menggunakan /qwen-7b.

    Command

    Atur ke python webui/webui_server.py --port=8000 --model-path=/qwen-7b --tensor-parallel-size 1 --backend=vllm.

    Di mana:

    • --model-path: Harus sama dengan path mount dalam konfigurasi model.

    • --tensor-parallel-size: Jumlah shard paralelisme tensor untuk model. Ini perlu disesuaikan berdasarkan jumlah GPU. Atur ke 1 untuk model 7B dan 8 untuk model 72B (memerlukan instans delapan GPU).

    Port Number

    Atur ke 8000.

    Resource Information

    Resource Type

    Pilih Resource Quota.

    Resource Quota

    Pilih kuota sumber daya yang Anda buat untuk Sumber daya Lingjun.

    Instance Count

    Konfigurasikan berdasarkan model dan sumber daya yang dipilih. Untuk model 7B, atur Instance Count ke 1.

    Deployment

    Untuk model 7B, konfigurasikan sumber daya yang digunakan oleh setiap instans sebagai berikut:

    • vCPUs: 16.

    • Memory (GB): 64.

    • GPUs: 1.

    Service Access

    VPC

    Setelah Anda mengonfigurasi titik pemasangan NAS, sistem secara otomatis mencocokkan VPC, vSwitch, dan grup keamanan dengan sistem file NAS yang telah ditentukan.

    vSwitch

    Security Group Name

  4. Klik Deploy.

    Ketika Service Status berubah menjadi Running, layanan telah diterapkan.

Panggil layanan

Setelah layanan diterapkan, Anda dapat memanggilnya untuk inferensi. Ikuti langkah-langkah berikut:

  1. Di daftar layanan, klik nama layanan target. Di pojok kanan atas halaman, klik View Web App.

  2. Di halaman WebUI, lakukan inferensi model.