Topik ini bertujuan membantu pengembang model dasar memulai dengan Layanan Komputasi AI PAI-Lingjun dan mengembangkan model dasar Qwen-7B, Qwen-14B, dan Qwen-72B. Proses pengembangan mencakup pelatihan terdistribusi, fine-tuning, inferensi offline, serta penyebaran online. Contoh ini menggunakan model Qwen-7B untuk menjelaskan praktik terbaik dalam mengembangkan model Qwen di Layanan Komputasi AI PAI-Lingjun.
Prasyarat
Dalam contoh ini, digunakan Qwen-7B V1.1.4. Sebelum memulai, pastikan prasyarat berikut telah dipenuhi:
Platform for AI (PAI) diaktifkan, termasuk Data Science Workshop (DSW), Deep Learning Containers (DLC), dan Elastic Algorithm Service (EAS). Ruang kerja default juga harus dibuat. Untuk informasi lebih lanjut, lihat Aktifkan PAI dan buat ruang kerja default.
Sumber daya Lingjun telah dibeli, dan kuota sumber daya telah dibuat untuk sumber daya tersebut. Tabel berikut menjelaskan spesifikasi sumber daya yang didukung oleh jumlah parameter model yang berbeda. Pilih spesifikasi yang sesuai berdasarkan jumlah parameter model aktual Anda. Untuk informasi lebih lanjut tentang spesifikasi node dari sumber daya Lingjun, lihat bagian Harga node dari topik "Penagihan sumber daya Lingjun (Edisi Serverless)". Informasi tambahan dapat ditemukan di Buat grup sumber daya dan beli sumber daya Lingjun dan Buat kuota sumber daya.
Jumlah parameter model
Sumber daya pelatihan parameter penuh
Sumber daya inferensi minimum
Paralelisme model untuk pelatihan berbasis Megatron
7 miliar
Delapan GPU gu7xf atau delapan GPU gu7ef
Satu GPU NVIDIA V100 (memori 32 GB) atau satu GPU NVIDIA A10 (memori 24 GB)
TP1 dan PP1
14 miliar
Delapan GPU gu7xf atau delapan GPU gu7ef
Dua GPU NVIDIA V100 (memori 32 GB) atau dua GPU NVIDIA A10 (memori 24 GB)
TP2 dan PP1
72 miliar
Empat server, masing-masing dengan delapan GPU gu7xf atau delapan GPU gu7ef
Enam GPU NVIDIA V100 (memori 32 GB) atau dua GPU gu7xf
TP8 dan PP2
Dataset telah dibuat berdasarkan sistem file NAS tujuan umum dari File Storage NAS untuk menyimpan file dan hasil yang diperlukan untuk pelatihan. Direktori mount default adalah
/mnt/data/nas. Untuk informasi lebih lanjut, lihat Buat dan kelola dataset.Instans DSW telah dibuat berdasarkan parameter kunci berikut. Untuk informasi lebih lanjut, lihat Buat instans DSW.
Resource Quota: Pilih kuota sumber daya yang dibuat untuk sumber daya Lingjun yang dibeli.
Instance Type: Konfigurasikan spesifikasi sumber daya berikut:
vCPUs: 90
Memory (GiB): 1024
Shared Memory (GiB): 1024
GPUs: minimal 8
Dataset Mounting: Klik Custom Dataset, pilih dataset yang dibuat, lalu tentukan direktori mount default.
Image: Klik Image Address dan masukkan URL citra berikut:
pai-image-manage-registry.cn-wulanchabu.cr.aliyuncs.com/pai/pytorch-training:1.12-ubuntu20.04-py3.10-cuda11.3-megatron-patch-llm.
Pengguna Resource Access Management (RAM) telah diberi izin yang diperlukan pada DSW, DLC, dan EAS jika Anda melakukan operasi dalam praktik terbaik ini sebagai pengguna RAM. Untuk informasi lebih lanjut, lihat Berikan izin yang diperlukan untuk menggunakan DSW, Berikan izin yang diperlukan untuk menggunakan DLC, dan Berikan izin yang diperlukan untuk menggunakan EAS.
Batasan
Praktik terbaik ini hanya didukung di wilayah China (Ulanqab).
Langkah 1: Persiapkan model Qwen
Anda dapat mengunduh model menggunakan salah satu metode yang dijelaskan dalam praktik terbaik ini. Lakukan langkah-langkah berikut:
Masuk ke lingkungan pengembangan DSW.
Masuk ke Konsol PAI.
Di pojok kiri atas halaman, pilih wilayah China (Ulanqab).
Di panel navigasi kiri, klik Workspaces. Di halaman Ruang Kerja, klik nama ruang kerja yang ingin Anda kelola.
Di panel navigasi kiri, pilih .
Temukan instans DSW yang ingin Anda kelola dan klik Open di kolom Actions.
Di bilah navigasi atas, klik Terminal. Pada tab ini, klik Create 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:
Kode sampel berikut mengunduh paket model Qwen-7B:
Tekan
Ctrl+Duntuk keluar dari lingkungan Python.Jalankan perintah berikut untuk memindahkan model yang 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') # Tampilkan direktori model yang diunduh. print(model_dir) # /root/.cache/modelscope/hub/qwen/Qwen-7B# mkdir -p /mnt/workspace/qwen-ckpts/${Direktori ckpt dengan akhiran hf} mkdir -p /mnt/workspace/qwen-ckpts/qwen-7b-hf # cp -r ${Direktori model yang diunduh}/* /mnt/workspace/qwen-ckpts/${Direktori ckpt dengan akhiran hf} cp -r /root/.cache/modelscope/hub/qwen/Qwen-7B/* /mnt/workspace/qwen-ckpts/qwen-7b-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, modifikasi kode contoh berikut sesuai dengan kebutuhan bisnis Anda:
mkdir /mnt/workspace/qwen-ckpts cd /mnt/workspace/qwen-ckpts git clone https://huggingface.co/Qwen/Qwen-7B # git clone https://huggingface.co/Qwen/Qwen-7B-Chat # git clone https://huggingface.co/Qwen/Qwen-14B # git clone https://huggingface.co/Qwen/Qwen-14B-Chat # git clone https://huggingface.co/Qwen/Qwen-72B # git clone https://huggingface.co/Qwen/Qwen-72B-Chat
Langkah 2: Persiapkan data untuk pra-pelatihan
Kami merekomendasikan menyiapkan data yang digunakan untuk pra-pelatihan di instans DSW. Dalam contoh ini, dataset WuDaoCorpora 2.0 digunakan untuk menjelaskan cara memproses data untuk pelatihan berbasis Megatron. Dataset ini hanya digunakan untuk penelitian. Anda dapat langsung mengunduh data sampel skala kecil yang diproses oleh PAI atau menyiapkan data pra-pelatihan sendiri.
Gunakan data sampel skala kecil yang diproses oleh PAI
Untuk membantu Anda menggunakan praktik terbaik ini, PAI menyediakan data sampel skala kecil yang telah diproses. Anda dapat menjalankan perintah berikut di tab Terminal DSW untuk mengunduh data sampel:
mkdir /mnt/workspace/qwen-datasets/
cd /mnt/workspace/qwen-datasets
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/qwen-datasets/alpaca_zh-qwen-train.json
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/qwen-datasets/alpaca_zh-qwen-valid.json
mkdir -p /mnt/workspace/qwen-datasets/wudao
cd /mnt/workspace/qwen-datasets/wudao
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/qwen-datasets/wudao_qwenbpe_content_document.bin
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/qwen-datasets/wudao_qwenbpe_content_document.idxProses data secara mandiri
Unduh dataset WuDaoCorpora 2.0 sumber terbuka ke direktori kerja
/mnt/workspace/qwen-datasets. Dalam contoh ini, folder yang diekstraksi diberi nama wudao_200g.Data sampel skala kecil yang diproses oleh PAI juga bersumber dari dataset ini. Anda dapat menjalankan perintah berikut di tab Terminal DSW untuk mengunduh dan mendekompres dataset:
mkdir /mnt/workspace/qwen-datasets cd /mnt/workspace/qwen-datasets wget https://atp-modelzoo.oss-cn-hangzhou.aliyuncs.com/release/datasets/WuDaoCorpus2.0_base_sample.tgz tar zxvf WuDaoCorpus2.0_base_sample.tgz mv WuDaoCorpus2.0_base_sample wudao_200gJalankan perintah berikut di tab Terminal untuk membersihkan data pada dataset WuDaoCorpora 2.0, mengonversi format file, lalu menghasilkan file merged_wudao_cleaned.json:
#! /bin/bash set -ex # Tentukan direktori dataset WuDaoCorpora 2.0. data_dir=/mnt/workspace/qwen-datasets/wudao_200g # Mulai proses pembersihan data. dataset_dir=$(dirname $data_dir) mkdir -p ${dataset_dir}/cleaned_wudao_dataset cd ${dataset_dir}/cleaned_wudao_dataset wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/llama2-codes/preprocess_wudao2.py # Setel opsi -k ke teks. python preprocess_wudao2.py -i ${data_dir} -o ${dataset_dir}/cleaned_wudao_dataset -k text -p 32 # Gabungkan data yang sudah dibersihkan. mkdir ${dataset_dir}/wudao cd ${dataset_dir}/wudao find ${dataset_dir}/cleaned_wudao_dataset -name "*.json" -exec cat {} + > ${dataset_dir}/wudao/merged_wudao_cleaned.json rm -rf ${dataset_dir}/cleaned_wudao_datasetKode sampel 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 grup dan kompres data setiap grup dengan memproses file merged_wudao_cleaned.json yang dihasilkan. Ini memfasilitasi multithreading dalam operasi selanjutnya.
apt-get update apt-get install zstd # Bagi data menjadi 10 grup. Jika pemrosesan data lambat, Anda dapat membagi data menjadi lebih banyak grup. NUM_PIECE=10 # Proses file merged_wudao_cleaned.json. mkdir -p ${dataset_dir}/cleaned_zst/ # Kueri panjang total data dan bagi data tersebut. NUM=$(sed -n '$=' ${dataset_dir}/wudao/merged_wudao_cleaned.json) echo "total line of dataset is $NUM, data will be split into $NUM_PIECE pieces for processing" NUM=`expr $NUM / $NUM_PIECE` echo "each group is processing $NUM sample" split_dir=${dataset_dir}/split mkdir $split_dir split -l $NUM --numeric-suffixes --additional-suffix=.jsonl ${dataset_dir}/wudao/merged_wudao_cleaned.json $split_dir/ # Kompres data setiap grup. o_path=${dataset_dir}/cleaned_zst/ mkdir -p $o_path files=$(ls $split_dir/*.jsonl) for filename in $files do f=$(basename $filename) zstd -z $filename -o $o_path/$f.zst & done rm -rf $split_dir rm ${dataset_dir}/wudao/merged_wudao_cleaned.jsonKode sampel 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 dataset yang digunakan untuk pra-pelatihan dalam format MMAP.
MMAP adalah format file di mana data ditokenisasi sebelumnya. Ini mengurangi waktu yang diperlukan untuk membaca data dari dataset selama pelatihan dan fine-tuning, terutama ketika Anda memproses sejumlah besar data. Lakukan langkah-langkah berikut:
Jalankan perintah berikut di tab Terminal DSW untuk menyalin file PAI-Megatron-Patch yang berisi kode sumber alat pelatihan berbasis Megatron ke direktori kerja
/mnt/workspace/DSW:cd /mnt/workspace/ # Metode 1: Dapatkan kode sumber alat pelatihan dari GitHub. git clone --recurse-submodules https://github.com/alibaba/Pai-Megatron-Patch.git # Metode 2: Dapatkan kode sumber alat pelatihan dengan menjalankan perintah wget. Lalu jalankan perintah tar zxvf Pai-Megatron-Patch.tgz untuk mendekompres file yang diunduh. wget https://atp-modelzoo.oss-cn-hangzhou.aliyuncs.com/release/models/Pai-Megatron-Patch.tgzJalankan perintah berikut di tab Terminal untuk mengonversi dataset ke format MMAP:
Setelah perintah dijalankan, file
.bindan.idxdihasilkan di direktori/mnt/workspace/qwen-datasets/wudao.# Instal pustaka tokenizer tempat Qwen bergantung. pip install tiktoken # Tentukan direktori dataset dan direktori kerja. export dataset_dir=/mnt/workspace/qwen-datasets export WORK_DIR=/mnt/workspace # Hasilkan set pelatihan dan validasi yang digunakan untuk pra-pelatihan dalam format MMAP. cd ${WORK_DIR}/Pai-Megatron-Patch/toolkits/pretrain_data_preprocessing bash run_make_pretraining_dataset.sh \ ../../Megatron-LM-23.04 \ ${WORK_DIR}/Pai-Megatron-Patch/ \ ${dataset_dir}/cleaned_zst/ \ qwenbpe \ ${dataset_dir}/wudao/ \ ${WORK_DIR}/qwen-ckpts/qwen-7b-hf rm -rf ${dataset_dir}/cleaned_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 dataset WuDaoCorpora 2.0 yang telah diproses dan dikemas.
tokenizer=$4
Tipe tokenizer. Dalam contoh ini, nilainya diatur ke qwenbpe.
output_data_dir=$5
Direktori file
.bindan.idxyang dihasilkan.load_dir=$6
Direktori file tokenizer_config.json yang dihasilkan.
Kode sampel 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 melaksanakan pelatihan berbasis Megatron:
Konversi format model
Anda harus mengonversi format model dari Hugging Face ke Megatron.
Unduh model Megatron yang dikonversi
Untuk membantu Anda menggunakan praktik terbaik ini, PAI menyediakan model yang formatnya telah dikonversi. Anda dapat menjalankan perintah berikut di tab Terminal untuk mengunduh model:
cd /mnt/workspace/
mkdir qwen-ckpts
cd qwen-ckpts
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/qwen-ckpts/qwen-7b-hf-to-mg-tp1-pp1.tgz
tar -zxf qwen-7b-hf-to-mg-tp1-pp1.tgz
mv qwen-7b-hf-to-mg-tp1-pp1 qwen-7b-hf-to-megatron-tp1-pp1Konversi format model dari Hugging Face ke Megatron
Jalankan perintah berikut di tab Terminal untuk menggunakan alat konversi model yang disediakan oleh PAI untuk mengonversi format model dari Hugging Face ke Megatron:
# Konversi format model.
cd /mnt/workspace/Pai-Megatron-Patch/toolkits/model_checkpoints_convertor/qwen
sh model_convertor.sh \
../../../Megatron-LM-main \
/mnt/workspace/qwen-ckpts/qwen-7b-hf \
/mnt/workspace/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1 \
1 \
1 \
qwen-7b \
0 \
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 dikonversi. |
TP=$4 | Ukuran paralelisme tensor, yang harus sama dengan ukuran untuk pelatihan. Ukuran bervariasi berdasarkan jumlah parameter model. Anda harus mengubah ukuran saat Anda mengonversi format model.
|
PP=$5 | Ukuran paralelisme pipeline, yang harus sama dengan ukuran untuk pelatihan. Ukuran bervariasi berdasarkan jumlah parameter model. Anda harus mengubah ukuran saat Anda mengonversi format model.
|
MN=$6 | Nama model, seperti qwen-7b, qwen-14b, atau qwen-72b. |
EXTRA_VOCAB_SIZE=$7 | Ukuran kosakata tambahan. |
mg2hf=$8 | Menentukan apakah akan mengonversi format model dari Megatron ke Hugging Face. |
Pra-latih model
Anda dapat mengirimkan pekerjaan mandiri untuk melatih model di DSW, atau mengirimkan pekerjaan terdistribusi untuk melatih model pada beberapa server multi-GPU di DLC. Proses pelatihan berlangsung sekitar 2 jam. Setelah pekerjaan dijalankan, file model diekspor ke direktori /mnt/workspace/output_megatron_qwen/.
Jalankan pekerjaan mandiri untuk pra-latih model di DSW
Kode sampel berikut menjalankan pekerjaan mandiri untuk melatih model Qwen-7B di tab Terminal:
export WORK_DIR=/mnt/workspace
cd ${WORK_DIR}/Pai-Megatron-Patch/examples/qwen
sh run_pretrain_megatron_qwen.sh \
dsw \
${WORK_DIR}/Pai-Megatron-Patch \
7B \
1 \
8 \
1e-5 \
1e-6 \
2048 \
2048 \
85 \
fp16 \
1 \
1 \
sel \
true \
false \
false \
false \
100000 \
${WORK_DIR}/qwen-datasets/wudao/wudao_qwenbpe_content_document \
${WORK_DIR}/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1 \
100000000 \
10000 \
${WORK_DIR}/output_megatron_qwen/ Tabel berikut menjelaskan parameter yang harus Anda tentukan untuk menjalankan skrip run_pretrain_megatron_qwen.sh.
Parameter | Deskripsi |
ENV=$1 | Lingkungan runtime. Nilai valid:
|
MEGATRON_PATH=$2 | Direktori kode sumber alat pelatihan berbasis Megatron. |
MODEL_SIZE=$3 | Jumlah parameter model. Nilai valid: 7B, 14B, dan 72B. |
BATCH_SIZE=$4 | Jumlah sampel pada setiap GPU untuk setiap iterasi pelatihan. Nilai valid: 4 dan 8. |
GLOBAL_BATCH_SIZE=$5 | Jumlah total sampel untuk iterasi pelatihan. |
LR=$6 | Tingkat pembelajaran. Nilai valid: 1e-5 dan 5e-5. |
MIN_LR=$7 | Tingkat pembelajaran minimum. Nilai valid: 1e-6 dan 5e-6. |
SEQ_LEN=$8 | Panjang urutan. |
PAD_LEN=${9} | Panjang urutan padding. |
EXTRA_VOCAB_SIZE=${10} | Ukuran kosakata tambahan. Ukuran bervariasi berdasarkan jumlah parameter model.
|
PR=${11} | Precisi pelatihan. Nilai valid: fp16 dan bf16. |
TP=${12} | Ukuran paralelisme tensor. |
PP=${13} | Ukuran paralelisme pipeline. |
AC=${14} | Mode checkpoint aktivasi. Nilai valid:
|
DO=${15} | Menentukan apakah menggunakan optimizer ZeRO-1 untuk Megatron. Nilai valid:
|
FL=${16} | Menentukan apakah mengaktifkan Flash Attention. Nilai valid:
|
SP=${17} | Menentukan apakah menggunakan paralelisme urutan. Nilai valid:
|
TE=${18} | Menentukan apakah mengaktifkan teknologi akselerasi Transformer Engine. Jika Anda ingin mengaktifkan teknologi ini, GPU gu8xf diperlukan. |
SAVE_INTERVAL=${19} | Interval penyimpanan file checkpoint. |
DATASET_PATH=${20} | Direktori set pelatihan. |
PRETRAIN_CHECKPOINT_PATH=${21} | Direktori model pra-latih. |
TRAIN_TOKENS=${22} | Jumlah token untuk pelatihan. |
WARMUP_TOKENS=${23} | Jumlah token untuk warm-up. |
OUTPUT_BASEPATH=${24} | Direktori file model output yang dihasilkan setelah pelatihan. |
Jalankan pekerjaan terdistribusi untuk pra-latih model di DLC
Setelah Anda melatih model di DSW, Anda dapat mengonfigurasi pekerjaan terdistribusi untuk melatih model pada beberapa server multi-GPU di DLC. Lakukan langkah-langkah berikut:
Di halaman Create Job, konfigurasikan parameter yang dijelaskan dalam tabel berikut. Anda dapat menggunakan nilai default untuk parameter lainnya. Untuk informasi lebih lanjut, lihat Buat pekerjaan pelatihan.
Parameter
Deskripsi
Basic Information
Job Name
Nama pekerjaan pelatihan. Dalam contoh ini, nilainya diatur ke test_qwen_dlc.
Environment Information
Node Image
Klik Image Address dan masukkan URL citra berikut di bidang:
pai-image-manage-registry.cn-wulanchabu.cr.aliyuncs.com/pai/pytorch-training:1.12-ubuntu20.04-py3.10-cuda11.3-megatron-patch-llm.Data Set
Klik Custom Dataset dan konfigurasikan parameter berikut:
Custom Dataset: Pilih dataset yang dibuat berdasarkan sistem file NAS tujuan umum dari File Storage NAS.
Mount Path: Masukkan
/mnt/workspace/.
Startup Command
Masukkan perintah berikut. Parameter yang harus Anda tentukan untuk menjalankan skrip run_pretrain_megatron_qwen.sh sama dengan yang Anda tentukan saat mengirimkan pekerjaan mandiri untuk melatih model di DSW.
export WORK_DIR=/mnt/workspace cd ${WORK_DIR}/Pai-Megatron-Patch/examples/qwen sh run_pretrain_megatron_qwen.sh \ dlc \ ${WORK_DIR}/PAI-Megatron-Patch \ 7B \ 1 \ 8 \ 1e-5 \ 1e-6 \ 2048 \ 2048 \ 85 \ fp16 \ 1 \ 1 \ sel \ true \ false \ false \ false \ 100000 \ ${WORK_DIR}/qwen-datasets/wudao/wudao_qwenbpe_content_document \ ${WORK_DIR}/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1 \ 100000000 \ 10000 \ ${WORK_DIR}/output_megatron_qwen/Resource Information
Resource Type
Pilih Lingjun Resources.
Source
Pilih Resource Quota.
Resource Quota
Pilih kuota sumber daya yang dibuat untuk sumber daya Lingjun yang dibeli.
Framework
Pilih PyTorch.
Job Resource
Konfigurasikan parameter berikut untuk node pekerja:
Number of Nodes: Masukkan 2. Jika Anda ingin melatih model pada lebih banyak server, Anda dapat meningkatkan nilai parameter Number of Nodes.
GPUs: Masukkan 8.
vCPUs: Masukkan 90.
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, pekerjaan pelatihan telah dijalankan.
Lakukan supervised fine-tuning
Anda dapat mengirimkan pekerjaan mandiri untuk fine-tune model di DSW, atau mengirimkan pekerjaan terdistribusi untuk fine-tune model pada beberapa server multi-GPU di DLC. Proses fine-tuning berlangsung sekitar 2 jam. Setelah pekerjaan dijalankan, file model diekspor ke direktori /mnt/workspace/output_megatron_qwen/.
Sebelum Anda melakukan fine-tuning model, buka Langkah 2: Persiapkan data untuk pra-pelatihan. Gunakan kode sampel pada tab Gunakan data sampel skala kecil yang diproses oleh PAI untuk mengunduh file JSON.
Fine-tune model.
Jalankan pekerjaan mandiri untuk fine-tune model di DSW
Kode sampel berikut menjalankan pekerjaan mandiri untuk fine-tune model Qwen-7B di tab Terminal:
export WORK_DIR=/mnt/workspace cd ${WORK_DIR}/Pai-Megatron-Patch/examples/qwen sh run_finetune_megatron_qwen_withGA.sh \ dsw \ ${WORK_DIR}/Pai-Megatron-Patch \ 7B \ 1 \ 96 \ 1e-5 \ 1e-6 \ 2048 \ 2048 \ 85 \ bf16 \ 1 \ 1 \ sel \ true \ false \ false \ false \ 1000 \ ${WORK_DIR}/qwen-datasets/alpaca_zh-qwen-train.json \ ${WORK_DIR}/qwen-datasets/alpaca_zh-qwen-valid.json \ ${WORK_DIR}/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1 \ 2000 \ 10 \ ${WORK_DIR}/output_megatron_qwen/Tabel berikut menjelaskan parameter yang harus Anda tentukan untuk menjalankan skrip run_finetune_megatron_qwen_withGA.sh.
Parameter
Deskripsi
ENV=$1
Lingkungan runtime. Nilai valid:
dlc
dsw
MEGATRON_PATH=$2
Direktori kode sumber alat pelatihan berbasis Megatron.
MODEL_SIZE=$3
Jumlah parameter model. Nilai valid: 7B, 14B, dan 72B.
BATCH_SIZE=$4
Jumlah sampel pada setiap GPU untuk setiap iterasi fine-tuning. Nilai valid: 1, 2, 4, dan 8.
GLOBAL_BATCH_SIZE=$5
Jumlah total sampel untuk iterasi fine-tuning. Nilai valid: 64, 96, dan 128.
LR=$6
Tingkat pembelajaran. Nilai valid: 1e-5 dan 5e-5.
MIN_LR=$7
Tingkat pembelajaran minimum. Nilai valid: 1e-6 dan 5e-6.
SEQ_LEN=$8
Panjang urutan.
PAD_LEN=$9
Panjang urutan padding.
EXTRA_VOCAB_SIZE=${10}
Ukuran kosakata tambahan. Ukuran bervariasi berdasarkan jumlah parameter model.
Qwen-7B: 85
Qwen-14B: 213
Qwen-72B: 213
PR=${11}
Precisi pelatihan. Nilai valid: fp16 dan bf16.
TP=${12}
Ukuran paralelisme tensor.
PP=${13}
Ukuran paralelisme pipeline.
AC=${14}
Mode checkpoint aktivasi. Nilai valid: full dan sel.
DO=${15}
Menentukan apakah menggunakan optimizer ZeRO-1 untuk Megatron. Nilai valid:
true
false
FL=${16}
Menentukan apakah mengaktifkan Flash Attention. Nilai valid:
true
false
SP=${17}
Menentukan apakah menggunakan paralelisme urutan. Nilai valid:
true
false
TE=${18}
Menentukan apakah mengaktifkan teknologi akselerasi Transformer Engine. Jika Anda ingin mengaktifkan teknologi ini, GPU gu8xf diperlukan.
SAVE_INTERVAL=${19}
Interval penyimpanan model.
DATASET_PATH=${20}
Direktori set pelatihan.
VALID_DATASET_PATH=${21}
Direktori set validasi.
PRETRAIN_CHECKPOINT_PATH=${22}
Direktori model pra-latih.
TRAIN_ITERS=${23}
Jumlah iterasi pelatihan.
LR_WARMUP_ITERS=${24}
Jumlah iterasi warm-up untuk tingkat pembelajaran.
OUTPUT_BASEPATH=${25}
Direktori file model output yang dihasilkan setelah pelatihan.
Jalankan pekerjaan terdistribusi untuk fine-tune model di DLC
Setelah Anda melakukan fine-tuning model di DSW, Anda dapat mengonfigurasi pekerjaan terdistribusi untuk fine-tune model pada beberapa server multi-GPU di DLC. Saat Anda mengirimkan pekerjaan pelatihan di DLC, masukkan perintah berikut untuk parameter Startup Command. Untuk informasi lebih lanjut tentang parameter lainnya, lihat bagian Pra-latih model dari topik ini.
export WORK_DIR=/mnt/workspace cd ${WORK_DIR}/Pai-Megatron-Patch/examples/qwen sh run_finetune_megatron_qwen_withGA.sh \ dlc \ ${WORK_DIR}/Pai-Megatron-Patch \ 7B \ 1 \ 96 \ 1e-5 \ 1e-6 \ 2048 \ 2048 \ 85 \ bf16 \ 1 \ 1 \ sel \ true \ false \ false \ false \ 1000 \ ${WORK_DIR}/qwen-datasets/alpaca_zh-qwen-train.json \ ${WORK_DIR}/qwen-datasets/alpaca_zh-qwen-valid.json \ ${WORK_DIR}/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1 \ 2000 \ 10 \ ${WORK_DIR}/output_megatron_qwen/Parameter yang harus Anda tentukan untuk menjalankan skrip run_finetune_megatron_qwen_withGA.sh sama dengan yang Anda tentukan saat mengirimkan pekerjaan mandiri untuk fine-tune model di DSW.
Langkah 4: Gunakan model untuk inferensi offline
Setelah model dilatih, Anda dapat melakukan inferensi offline menggunakan model berbasis Megatron untuk mengevaluasi efek model. Lakukan langkah-langkah berikut:
Unduh file pred_input.jsonl yang berisi sampel uji dan unggah file tersebut ke direktori
/mnt/workspaceDSW. Untuk informasi lebih lanjut, lihat Unggah dan unduh file.CatatanData yang digunakan untuk inferensi harus diorganisir 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 ditempatkan di direktori
{OUTPUT_BASEPATH }/checkpointdan di 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 di file
/mnt/workspace/qwen_pred.txt. Anda dapat mengevaluasi efek model berdasarkan hasil inferensi.CatatanSebelum menjalankan perintah, Anda harus mengatur parameter CUDA_VISIBLE_DEVICES ke 0 dan parameter GPUS_PER_NODE ke 1 di skrip run_text_generation_megatron_qwen.sh.
export WORK_DIR=/mnt/workspace cd ${WORK_DIR}/Pai-Megatron-Patch/examples/qwen bash run_text_generation_megatron_qwen.sh \ dsw \ ${WORK_DIR}/PAI-Megatron-Patch \ /mnt/workspace/output_megatron_qwen/checkpoint/dswXXX \ 7B \ 1 \ 1 \ 1024 \ 1024 \ 85 \ fp16 \ 10 \ 512 \ 512 \ ${WORK_DIR}/pred_input.jsonl \ ${WORK_DIR}/qwen_pred.txt \ 0 \ 1.0 \ 1.2Tabel berikut menjelaskan parameter yang harus Anda tentukan untuk menjalankan skrip run_text_generation_megatron_qwen.sh.
Parameter
Deskripsi
ENV=$1
Lingkungan runtime. Nilai valid:
dlc
dsw
MEGATRON_PATCH_PATH=$2
Direktori folder Pai-Megatron-Patch.
CHECKPOINT_PATH=$3
Direktori model selama pelatihan.
PentingGanti direktori ini dengan direktori model aktual Anda.
MODEL_SIZE=$4
Jumlah parameter model. Nilai 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 valid: 1, 4, dan 8.
SEQ_LEN=$7
Panjang urutan. Nilai valid: 256, 512, dan 1024.
PAD_LEN=$8
Panjang urutan padding, yaitu panjang teks yang digabungkan.
EXTRA_VOCAB_SIZE=${9}
Jumlah token yang bertambah selama konversi model. Jumlah bervariasi berdasarkan jumlah parameter model.
Qwen-7B: 85
Qwen-14B: 213
Qwen-72B: 213
PR=${10}
Precisi inferensi. Nilai valid: fp16 dan bf16.
TOP_K=${11}
Jumlah kata kandidat teratas yang dipilih. Nilai valid: 0 hingga n. Contoh: 0, 5, 10, dan 20.
INPUT_SEQ_LEN=${12}
Panjang urutan input. Atur nilainya ke 512.
OUTPUT_SEQ_LEN=${13}
Panjang urutan output. Atur nilainya ke 256.
INPUT_FILE=${14}
File yang berisi teks yang akan digunakan untuk inferensi. Dalam contoh ini, file pred_input.jsonl digunakan, di mana setiap baris berisi satu sampel.
OUTPUT_FILE=${15}
File keluaran yang dihasilkan setelah inferensi. Dalam contoh ini, file qwen_pred.txt digunakan.
TOP_P=${16}
Persentase kata kandidat teratas yang dipilih. Nilai valid: 0 hingga 1. Contoh: 0, 0.85, dan 0.95.
CatatanAnda harus mengatur salah satu parameter TOP_K atau TOP_P ke 0.
TEMPERATURE=${17}
Kerandoman proses sampling. Nilai valid: 1 hingga n.
REPETITION_PENALTY=${18}
Penalti pengulangan konten yang dihasilkan oleh model. Nilai valid: 1 hingga 2. Nilai default: 1.2.
Langkah 5: Konversi format model
Jika efek model memenuhi harapan Anda setelah inferensi offline dilakukan menggunakan model, Anda dapat mengonversi format model dari Megatron ke Hugging Face. Lalu, Anda dapat menyebarkan model Hugging Face yang dikonversi sebagai layanan model.
Jalankan perintah berikut di tab Terminal untuk mengonversi format model dari Megatron ke Hugging Face:
export WORK_DIR=/mnt/workspace cd /mnt/workspace/Pai-Megatron-Patch/toolkits/model_checkpoints_convertor/qwen sh model_convertor.sh \ ../../../Megatron-LM-main \ ${WORK_DIR}/output_megatron_qwen/checkpoint/${Direktori}/iter_******* \ /mnt/workspace/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1/ \ 1 \ 1 \ qwen-7b \ 0 \ 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 ukuran saat pelatihan.
PP=$5
Ukuran paralelisme pipeline, yang harus sama dengan ukuran saat pelatihan.
MN=$6
Nama model, seperti qwen-7b, qwen-14b, atau qwen-72b.
EXTRA_VOCAB_SIZE=$7
Ukuran kosakata tambahan.
mg2hf=$8
Menentukan apakah mengonversi format model dari Megatron ke Hugging Face.
Salin file
.json,.py, dan.tiktokendi direktori/mnt/workspace/qwen-ckpts/qwen-7b-hfmodel Hugging Face sumber terbuka ke direktori/mnt/workspace/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1untuk memastikan bahwa model dapat digunakan dengan benar.PentingPerhatikan bahwa Anda tidak perlu menyalin file pytorch_model.bin.index.json.
Langkah 6: Sebarkan model sebagai layanan model dan panggil layanan model
Setelah Anda melakukan inferensi offline dan mengevaluasi efek model, Anda dapat menyebarkan model Hugging Face yang dikonversi sebagai layanan model online dan memanggil layanan model di lingkungan produksi aktual untuk melakukan inferensi. Lakukan langkah-langkah berikut:
Sebarkan model sebagai layanan model
Masuk ke Konsol PAI. Pilih wilayah di bagian atas halaman. Lalu, 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 di wilayah tertentu. Dalam contoh ini, nilainya diatur ke test_qwen.
Environment Information
Deployment Method
Dalam contoh ini, pilih Image-based Deployment dan Enable Web App.
Image Configuration
Pilih Image Address, masukkan
eas-registry-vpc.cn-wulanchabu.cr.aliyuncs.com/pai-eas/chat-llm-webui:3.0.4-vllmdi bidang.Mount storage
Pilih General-purpose NAS, klik General NAS dan konfigurasikan parameter berikut:
File System: sistem file NAS tujuan umum tempat dataset dibuat.
Mount Target: titik mount tempat dataset dibuat.
File System Path: direktori model Hugging Face yang dikonversi yang disimpan di sistem file NAS. Dalam contoh ini, direktori
/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1digunakan.Mount Path: jalur mount model. Dalam contoh ini, nilainya diatur ke
/qwen-7b.
Command
Dalam contoh ini, perintah berikut dijalankan:
python webui/webui_server.py --port=8000 --model-path=/qwen-7b --tensor-parallel-size 1 --backend=vllm.Dimana:
--model-path: jalur mount model, yang harus sama dengan yang diatur dalam pengaturan model.
--tensor-parallel-size: ukuran paralelisme tensor, yang harus disesuaikan berdasarkan jumlah GPU. Misalnya, atur parameter ini ke 1 untuk model Qwen-7B atau 8 untuk model Qwen-72B.
Port Number
Dalam contoh ini, port 8000 digunakan.
Resource Information
Resource Type
Dalam contoh ini, Resource Quota dipilih.
Resource Quota
Pilih kuota sumber daya yang dibuat untuk sumber daya Lingjun yang dibeli.
Instances
Untuk model Qwen-7B, setiap instans menggunakan sumber daya berikut:
vCPUs: 16
Memory (GB): 64
GPUs: 1
VPC configuration
VPC
Setelah Anda mengonfigurasi parameter Titik Mount NAS, sistem secara otomatis mencocokkan virtual private cloud (VPC), vSwitch, dan grup keamanan dari sistem file NAS yang ditentukan.
vSwitch
Security Group Name
Klik Deploy.
Jika status layanan berubah menjadi Running, layanan telah disebarkan.
Panggil layanan model
Setelah layanan model disebarkan, Anda dapat memanggil layanan tersebut untuk melakukan inferensi. Lakukan langkah-langkah berikut:
Di tab Layanan Inferensi, temukan layanan yang ingin Anda panggil dan klik View Web App.

Di halaman WebUI, lakukan inferensi.