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:
Masuk ke lingkungan pengembangan DSW.
Masuk ke Konsol PAI.
Di pojok kiri atas halaman, pilih wilayah China (Ulanqab).
Di panel navigasi sebelah kiri, klik Workspaces. Di halaman Ruang Kerja, klik nama ruang kerja yang ingin Anda kelola.
Di panel navigasi sebelah kiri, pilih .
Temukan instans DSW yang ingin Anda kelola dan klik Open di kolom Actions.
Di bilah navigasi atas, klik Terminal. Di tab ini, klik create a terminal atau ikon plus (+) di pojok kanan atas.
Unduh model Qwen.
Unduh model dari komunitas ModelScope
Jalankan perintah berikut di tab Terminal untuk menginstal ModelScope:
Jalankan perintah berikut untuk masuk ke lingkungan Python:
Contoh kode berikut mengunduh paket model Qwen-7B.
Tekan
Ctrl+Duntuk keluar dari lingkungan Python.Jalankan perintah berikut untuk memindahkan model yang telah diunduh ke folder yang sesuai:
pip install modelscopepython# ### 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# 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-hfUnduh 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.idxProses data sendiri
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_200gJalankan 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_datasetKode contoh berikut menunjukkan struktur direktori
qwen-datasetssetelah perintah di atas dijalankan. Folder wudao dibuat.qwen-datasets ├── wudao_200g └── wudao └── merged_wudao_cleaned.jsonJalankan 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.jsonKode contoh berikut menunjukkan struktur direktori
qwen-datasetssetelah perintah di atas dijalankan. Foldercleaned_zstdibuat dan berisi 10 file terkompresi.qwen-datasets ├── wudao_200g ├── wudao └── cleaned_zst ├── 00.jsonl.zst │ ... └── 09.jsonl.zstHasilkan 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:
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.tgzJalankan perintah berikut di tab Terminal untuk mengonversi set data ke format MMAP:
Setelah perintah dijalankan, file
.bindan.idxdihasilkan 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_zstTabel 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
.bindan.idxyang dihasilkan.load_dir=$6
Direktori file tokenizer_config.json yang dihasilkan.
Kode contoh berikut menunjukkan struktur direktori
qwen-datasetssetelah 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-pp1Konversi 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 \
falseTabel 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.
|
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.
|
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:
|
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.
|
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:
|
DO=${15} | Menentukan apakah akan menggunakan pengoptimal ZeRO-1 untuk Megatron. Nilai yang valid:
|
FL=${16} | Menentukan apakah akan mengaktifkan Flash Attention. Nilai yang valid:
|
SP=${17} | Menentukan apakah akan menggunakan paralelisme urutan. Nilai yang valid:
|
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:
Masuk ke halaman Create Job.
Masuk ke Konsol PAI. Pilih wilayah dan ruang kerja target di bagian atas halaman, lalu klik Deep Learning Containers (DLC).
Di halaman Deep Learning Containers (DLC), klik Create Job.
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.
CatatanJumlah core CPU tidak boleh lebih dari 96.
Memory (GiB): Masukkan 1024.
Shared Memory (GiB): Masukkan 1024.
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/.
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.
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:
Unduh file pred_input.jsonl yang berisi sampel uji dan unggah file tersebut ke direktori
/mnt/workspaceDSW. Untuk informasi selengkapnya, lihat Unggah dan unduh file.CatatanData yang digunakan untuk inferensi harus diorganisasi dengan cara yang sama seperti untuk fine-tuning.
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 }/checkpointdan dalam folder yang sama dengan file latest_checkpointed_iteration.txt.CatatanGanti 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/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.CatatanSebelum 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.2Tabel 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.
PentingGanti 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.
PentingJika 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.
CatatanAnda 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.
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 \ trueTabel 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_*******.PentingGanti 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.
Salin file
.json,.py, dan.tiktokendi direktori model Hugging Face open source/mnt/workspace/qwen-ckpts/qwen-7b-hfke direktori/mnt/workspace/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1untuk memastikan model dapat digunakan dengan benar.PentingPerhatikan bahwa Anda tidak perlu menyalin file pytorch_model.bin.index.json.
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
-
Masuk ke Konsol PAI. Pilih wilayah di bagian atas halaman. Kemudian, pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).
-
Klik Deploy Service. Di bagian Custom Model Deployment, klik Custom Deployment.
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-vllmdi 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
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:
Di tab Layanan Inferensi, temukan layanan yang ingin Anda panggil dan klik View Web App.

Di halaman WebUI, lakukan inferensi.