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:
-
Masuk ke lingkungan pengembangan PAI DSW.
-
Masuk ke Konsol PAI.
-
Di pojok kiri atas halaman, pilih wilayah tempat Anda ingin menggunakan layanan: China (Ulanqab).
-
Di panel navigasi sebelah kiri, klik Workspaces. Di halaman yang muncul, klik nama ruang kerja yang ingin Anda kelola.
-
Di panel navigasi sebelah kiri, pilih .
-
Di kolom Actions instans target, klik Open.
-
-
Di bilah menu atas, klik Terminal. Di tab yang muncul, klik create a terminal.
-
Unduh model Qwen.
Unduh model dari komunitas ModelScope
-
Di Terminal, jalankan perintah berikut untuk menginstal ModelScope.
-
Jalankan perintah berikut untuk masuk ke lingkungan Python.
-
Kode berikut menunjukkan cara mengunduh file model untuk model Qwen-7B.
-
Tekan
Ctrl+Duntuk keluar dari lingkungan Python. -
Jalankan perintah berikut untuk memindahkan model Qwen yang telah diunduh ke folder yang sesuai.
pip install modelscopepython# ### 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# 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-hfUnduh 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
-
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 -
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_datasetSetelah perintah dijalankan, struktur file direktori
qwen-datasetsadalah sebagai berikut. Folder wudao baru ditambahkan.qwen-datasets ├── wudao_200g └── wudao └── merged_wudao_cleaned.json -
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.jsonSetelah perintah dijalankan, struktur file direktori
qwen-datasetsadalah sebagai berikut. Folder barucleaned_zstditambahkan, yang berisi 10 file terkompresi.qwen-datasets ├── wudao_200g ├── wudao └── cleaned_zst ├── 00.jsonl.zst │ ... └── 09.jsonl.zst -
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:
-
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 -
Di Terminal, jalankan perintah berikut untuk mengonversi data ke format MMAP.
Setelah perintah dijalankan, file
.bindan.idxdihasilkan 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_zstTabel 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
.bindan.idx.load_dir=$6
Path file tokenizer_config.json yang dihasilkan.
Setelah skrip dijalankan, struktur file direktori
qwen-datasetsadalah 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:
|
|
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:
|
|
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:
|
|
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:
|
|
PR=${11} |
Precisi pelatihan: fp16 atau bf16. |
|
TP=${12} |
Tingkat paralelisme model. |
|
PP=${13} |
Tingkat paralelisme pipeline. |
|
AC=${14} |
Mode activation checkpointing:
|
|
DO=${15} |
Menentukan apakah akan menggunakan optimizer Zero-1 versi Megatron untuk mengurangi penggunaan VRAM:
|
|
FL=${16} |
Menentukan apakah akan mengaktifkan Flash Attention:
|
|
SP=${17} |
Menentukan apakah akan menggunakan sequence parallelism:
|
|
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:
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 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-llmdi 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
CatatanJumlah core CPU tidak boleh melebihi 96.
-
Memory (GiB): 1024
-
Shared Memory (GiB): 1024
-
-
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/.
-
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.
-
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:
-
Unduh sampel uji pred_input.jsonl dan unggah ke direktori
/mnt/workspacedi DSW. Untuk informasi selengkapnya, lihat Unggah dan unduh file.CatatanStruktur data untuk inferensi harus konsisten dengan struktur data yang digunakan untuk fine-tuning.
-
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 }/checkpointdan berada pada level yang sama dengan latest_checkpointed_iteration.txt.CatatanGanti 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/ -
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.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 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.
PentingGanti 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.
CatatanHanya 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:
-
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 \ trueTabel 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.
-
-
Salin file
.json,.py, dan.tiktokendari folder model HuggingFace 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.PentingPerhatikan bahwa Anda tidak perlu menyalin file pytorch_model.bin.index.json.
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
-
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 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
-
-
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:
-
Di daftar layanan, klik nama layanan target. Di pojok kanan atas halaman, klik View Web App.
-
Di halaman WebUI, lakukan inferensi model.