Megatron kullanarak Lingjun Akıllı Bilgi İşlem platformunda Qwen (7B/14B/72B) modellerini eğitin, ince ayar yapın ve dağıtın. Bu kılavuzda örnek olarak Qwen-7B kullanılmıştır.
Ön koşullar
Bu kılavuzda Qwen-7B v1.1.4 sürümü kullanılmaktadır. Aşağıdaki hazırlıkları tamamlayın:
PAI'yi (DSW, DLC ve EAS) etkinleştirin ve varsayılan bir çalışma alanı oluşturun. PAI'yi etkinleştirin ve varsayılan bir çalışma alanı oluşturun.
-
Lingjun kaynaklarını satın alın ve bir kaynak kotası oluşturun. Model boyutunuza göre teknik özellikleri seçin. Fiyatlandırma: Lingjun Serverless fiyatlandırma ayrıntıları. Kurulum: Bir kaynak grubu oluşturun ve Lingjun kaynaklarını satın alın ve Bir kaynak kotası oluşturun.
Model boyutu
Tam parametreli eğitim kaynakları
Çıkarım kaynakları (minimum)
Megatron Eğitim Modeli Bölümü
7B
8 × gu7xf GPU, 8 × gu7ef GPU
1 × V100 (32 GB VRAM), 1 × A10 (24 GB VRAM)
TP: 1, PP: 1
14B
8 × gu7xf GPU, 8 × gu7ef GPU
2 × V100 (32 GB VRAM), 2 × A10 (24 GB VRAM)
TP: 2, PP: 1
72B
4 × 8 gu7xf GPU, 4 × 8 gu7ef GPU
6 × V100 (32 GB VRAM), 2 × gu7xf GPU
TP: 8, PP: 2 Eğitim dosyalarını ve sonuçlarını depolamak için Genel Amaçlı NAS dosya sistemi veri kümesi oluşturun. Varsayılan bağlama yolunu
/mnt/data/nasolarak yapılandırın. Veri kümeleri oluşturun ve yönetin.-
Aşağıdaki ayarlarla bir DSW örneği oluşturun. Bir DSW örneği oluşturun.
Resource Quota: Lingjun kaynakları için oluşturduğunuz kaynak kotasını seçin.
-
Instance Type: Aşağıdaki kaynak teknik özelliklerini yapılandırın.
vCPUs: 90.
Memory (GiB): 1024.
Shared Memory (GiB): 1024.
GPUs: En az 8.
Dataset Mounting: Custom Dataset seçeneğini tıklayın, oluşturduğunuz veri kümesini seçin ve varsayılan bağlama yolunu kullanın.
Image Configuration: Image Address sekmesinde, çalışma zamanı görüntüsünü
pai-image-manage-registry.cn-wulanchabu.cr.aliyuncs.com/pai/pytorch-training:1.12-ubuntu20.04-py3.10-cuda11.3-megatron-patch-llmolarak ayarlayın.
Bir RAM kullanıcısı kullanıyorsanız, DSW, DLC veya EAS için gerekli izinleri verin. Cloud ürün bağımlılıkları ve izinleri: DSW, Cloud ürün bağımlılıkları ve izinleri: DLC veya Cloud ürün bağımlılıkları ve izinleri: EAS.
Sınırlamalar
Bu en iyi uygulama yalnızca Çin (Ulanqab) bölgesinde kullanılabilir.
Adım 1: Qwen modelini hazırlayın
Qwen modelini aşağıdaki yöntemlerden birini kullanarak indirin:
-
PAI DSW geliştirme ortamına gidin.
PAI konsoluna giriş yapın.
Sayfanın sol üst köşesinde hizmeti kullanmak istediğiniz bölgeyi seçin: Çin (Ulanqab).
Sol gezinme bölmesinde Workspaces seçeneğini tıklayın. Açılan sayfada yönetmek istediğiniz çalışma alanının adını tıklayın.
Sol gezinme bölmesinde seçeneklerini belirleyin.
Hedef örneğin Actions sütununda Open seçeneğini tıklayın.
Üst menü çubuğunda Terminal seçeneğini tıklayın. Açılan sekmede create a terminal seçeneğini tıklayın.
-
Qwen modelini indirin.
ModelScope topluluğundan modeli indirin
Terminalde ModelScope'u yüklemek için aşağıdaki komutu çalıştırın.
Python ortamına girin.
Aşağıdaki kod, Qwen-7B model dosyalarını indirir.
Python ortamından çıkmak için
Ctrl+Dtuşlarına basın.İndirilen Qwen modelini ilgili klasöre taşımak için aşağıdaki komutu çalıştırın.
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') # Get the download path. 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-hfHuggingFace topluluğundan modeli indirin
DSW Terminalinde modeli indirmek için aşağıdaki komutu çalıştırın. Bu kılavuzda örnek olarak Qwen-7B modeli kullanılmıştır. Qwen-14B veya Qwen-72B model dosyalarını indirmek için aşağıdaki kodu gerektiği gibi değiştirin.
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
Adım 2: Ön eğitim verilerini hazırlayın
DSW'de ön eğitim verilerini hazırlayın. Bu örnekte Megatron veri ön işleme işlemini göstermek amacıyla WuDaoCorpora2.0 (yalnızca araştırma amaçlı) kullanılmıştır. PAI tarafından sağlanan örnek verileri indirin veya kendi verilerinizi hazırlayın.
PAI tarafından işlenen küçük ölçekli örnek verileri kullanın
PAI, işlenmiş örnek veriler sağlar. İndirmek için aşağıdaki komutu çalıştırın.
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
Verileri kendiniz işleyin
-
WuDaoCorpora2.0 veri kümesini
/mnt/workspace/qwen-datasetsdizinine indirin. Sıkıştırması açılan klasörün adı wudao_200g'dir.PAI, gösterim amaçlı örnek veriler sağlar. Veri kümesini indirmek ve sıkıştırmayı açmak için aşağıdaki komutu çalıştırın.
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 -
Terminalde Wudao verileri üzerinde veri temizleme ve dosya biçimi dönüştürme işlemlerini gerçekleştirmek için aşağıdaki komutu çalıştırın. Bu işlem, birleştirilmiş merged_wudao_cleaned.json dosyasını oluşturur.
#! /bin/bash set -ex # Set the path where the raw data is stored. 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 # Unlike the previous section, the key parameter is added and set 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_datasetKomut çalıştırıldıktan sonra
qwen-datasetsdizininin dosya yapısı aşağıdaki gibidir. Yeni bir wudao klasörü eklenmiştir.qwen-datasets ├── wudao_200g └── wudao └── merged_wudao_cleaned.json -
Terminalde merged_wudao_cleaned.json dosyasını birden çok gruba bölmek ve sıkıştırmak için aşağıdaki komutu çalıştırın. Bu işlem, sonraki adımlarda çoklu iş parçacığı kullanımını kolaylaştırır.
apt-get update apt-get install zstd # The number of chunks is set to 10. increase this value if data processing is slow. NUM_PIECE=10 # Process the merged_wudao_cleaned.json file. mkdir -p ${dataset_dir}/cleaned_zst/ # Query the total data length 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. 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.jsonKomut çalıştırıldıktan sonra
qwen-datasetsdizininin dosya yapısı aşağıdaki gibidir. İçinde 10 sıkıştırılmış dosya bulunan yeni bircleaned_zstklasörü eklenmiştir.qwen-datasets ├── wudao_200g ├── wudao └── cleaned_zst ├── 00.jsonl.zst │ ... └── 09.jsonl.zst -
MMAP biçiminde bir ön eğitim veri kümesi oluşturun.
MMAP, eğitim ve ince ayar sırasında verilerin okunması için beklenen süreyi azaltan önceden tokenize edilmiş bir veri biçimidir. Bu durum, özellikle büyük ölçekli verileri işlerken avantaj sağlar. Aşağıdaki adımları izleyin:
-
DSW Terminalinde, Megatron için bir model eğitim aracı olan PAI-Megatron-Patch kaynak kodunu DSW çalışma dizinine
/mnt/workspace/kopyalamak için aşağıdaki komutu çalıştırın.cd /mnt/workspace/ # Method 1: Obtain the training code from the open source website. git clone --recurse-submodules https://github.com/alibaba/Pai-Megatron-Patch.git # Method 2: Obtain the training code using wget. run tar zxvf Pai-Megatron-Patch.tgz to decompress the file. wget https://atp-modelzoo.oss-cn-hangzhou.aliyuncs.com/release/models/Pai-Megatron-Patch.tgz -
Terminalde verileri MMAP biçimine dönüştürmek için aşağıdaki komutu çalıştırın.
Komut çalıştırıldıktan sonra
/mnt/workspace/qwen-datasets/wudaodizininde.binve.idxdosyaları oluşturulur.# Install the tokenizer library required by Qwen. pip install tiktoken # Set the dataset path and working directory. export dataset_dir=/mnt/workspace/qwen-datasets export WORK_DIR=/mnt/workspace # Generate MMAP-format pre-training datasets for the training and validation sets. 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_zstAşağıdaki tabloda run_make_pretraining_dataset.sh betiğinin parametreleri açıklanmıştır.
Parametre
Açıklama
MEGATRON_PATH=$1
açık kaynak Megatron kodunun yolu.
MEGATRON_PATCH_PATH=$2
Megatron Patch kodunun yolu.
input_data_dir=$3
paketlenmiş WuDao veri kümesini içeren klasörün yolu.
tokenizer=$4
tokenizer türü. Bunu qwenbpe olarak ayarlayın.
output_data_dir=$5
çıktı.binve.idxdosyalarının kaydedileceği yol.
load_dir=$6
oluşturulan tokenizer_config.json dosyasının yolu.Sonuç olarak elde edilen
qwen-datasetsdizin yapısı:qwen-datasets ├── wudao_200g └── wudao ├── wudao_qwenbpe_content_document.bin └── wudao_qwenbpe_content_document.idx
-
Adım 3: Modeli Megatron ile eğitin
Modeli Megatron ile eğitin.
Model biçimini dönüştürün
HuggingFace model dosyalarını Megatron biçimine dönüştürün.
Dönüştürülmüş Megatron modelini indirin
PAI, önceden dönüştürülmüş bir model sağlar. İndirin:
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
HuggingFace modelini Megatron biçimine dönüştürün
HuggingFace modelini Megatron biçimine dönüştürmek için aşağıdaki komutu çalıştırın:
# Convert the 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
Aşağıdaki tabloda model_convertor.sh betiğinin parametreleri açıklanmıştır.
Parametre | Açıklama |
MEGATRON_PATH=$1 | açık kaynak Megatron kodunun yolu. |
SOURCE_CKPT_PATH=$2 | HuggingFace model dosyalarının yolu. |
TARGET_CKPT_PATH=$3 | dönüştürülen Megatron modelinin kaydedileceği yol. |
TP=$4 | tensor paralelliği parça sayısı. Bu değer, eğitimde kullanılan sayı ile aynı olmalıdır. Parça sayısı model boyutuna göre değişir. Modeli dönüştürürken bu parametreyi gerektiği gibi değiştirin:
|
PP=$5 | işlem hattı paralelliği parça sayısı. Bu değer, eğitimde kullanılan sayı ile aynı olmalıdır. Parça sayısı model boyutuna göre değişir. Modeli dönüştürürken bu parametreyi gerektiği gibi değiştirin:
|
MN=$6 | model adı: qwen-7b, qwen-14b veya qwen-72b. |
EXTRA_VOCAB_SIZE=$7 | ek sözlük boyutu. |
mg2hf=$8 | Bir Megatron modelinin HuggingFace modeline dönüştürülüp dönüştürülmeyeceğini belirtir. |
Ön eğitilmiş model
Tek bir DSW örneğinde ön eğitim yapın veya DLC'de dağıtılmış bir görev gönderin. Eğitim yaklaşık iki saat sürer. Model dosyaları /mnt/workspace/output_megatron_qwen/ dizinine kaydedilir.
DSW tek başına ön eğitilmiş model
Terminalde Qwen-7B modeli için aşağıdaki komutu çalıştırın:
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/
run_pretrain_megatron_qwen.sh betiğinin parametreleri:
Parametre | Açıklama |
ENV=$1 | Çalışma ortamı:
|
MEGATRON_PATH=$2 | Açık kaynak Megatron kodunun yolu. |
MODEL_SIZE=$3 | Model boyutu: 7B, 14B veya 72B. |
BATCH_SIZE=$4 | Her GPU'da bir eğitim iterasyonu için örnek sayısı: 4 veya 8. |
GLOBAL_BATCH_SIZE=$5 | Toplam eğitim örneği sayısı. |
LR=$6 | Öğrenme oranı: 1e-5 veya 5e-5. |
MIN_LR=$7 | Minimum öğrenme oranı: 1e-6 veya 5e-6. |
SEQ_LEN=$8 | Dizi uzunluğu. |
PAD_LEN=${9} | Dolgu uzunluğu. |
EXTRA_VOCAB_SIZE=${10} | Ek sözlük boyutu:
|
PR=${11} | Eğitim hassasiyeti: fp16 veya bf16. |
TP=${12} | Model paralelliği derecesi. |
PP=${13} | İşlem hattı paralelliği derecesi. |
AC=${14} | Aktivasyon kontrol noktası modu:
|
DO=${15} | VRAM kullanımını azaltmak için Zero-1 optimize edicisinin Megatron sürümünün kullanılıp kullanılmayacağını belirtir:
|
FL=${16} | Flash Attention'ın etkinleştirilip etkinleştirilmeyeceğini belirtir:
|
SP=${17} | Dizi paralelliğinin kullanılıp kullanılmayacağını belirtir:
|
TE=${18} | Transformer-engine hızlandırmanın etkinleştirilip etkinleştirilmeyeceğini belirtir. Bu özellik gu8xf GPU'lar gerektirir. |
SAVE_INTERVAL=${19} | Kontrol noktası dosyalarının kaydedilme aralığı. |
DATASET_PATH=${20} | Eğitim veri kümesinin yolu. |
PRETRAIN_CHECKPOINT_PATH=${21} | Ön eğitilmiş modelin yolu. |
TRAIN_TOKENS=${22} | Eğitim belirteçleri |
WARMUP_TOKENS=${23} | Isınma belirteci sayısı. |
OUTPUT_BASEPATH=${24} | Çıktı model dosyalarının kaydedileceği yol. |
DLC Dağıtılmış Ön Eğitilmiş Model
Tek örnek hata ayıklamasından sonra, DLC'de dağıtılmış çoklu GPU görevini yapılandırın:
-
Create Job sayfasına gidin.
PAI konsoluna giriş yapın, hedef bölgeyi ve çalışma alanını seçin ve Deep Learning Containers (DLC) seçeneğini tıklayın.
Deep Learning Containers (DLC) sayfasında Create Job seçeneğini tıklayın.
-
Create Job sayfasında aşağıdaki anahtar parametreleri yapılandırın ve diğer parametreler için varsayılanları koruyun. Bir eğitim görevi oluşturun.
Parametre
Açıklama
Basic Information
Job Name
Özel bir görev adı girin. Bu kılavuzda test_qwen_dlc kullanılmaktadır.
Environment Information
Image Configuration
Image Address seçeneğini belirleyin ve metin kutusuna
pai-image-manage-registry.cn-wulanchabu.cr.aliyuncs.com/pai/pytorch-training:1.12-ubuntu20.04-py3.10-cuda11.3-megatron-patch-llmadresini girin.Mount dataset
Custom Dataset seçeneğini tıklayın ve aşağıdaki parametreleri yapılandırın:
Custom Dataset: Oluşturduğunuz NAS veri kümesini seçin.
Mount Path: Bunu
/mnt/workspace/olarak ayarlayın.
Startup Command
Aşağıdaki komutu yapılandırın. run_pretrain_megatron_qwen.sh betiğinin başlangıç parametreleri, tek bir DSW örneğinde modeli ön eğitmek için kullanılan parametrelerle aynıdır.
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
Lingjun Intelligent Computing seçeneğini belirleyin.
Source
Resource Type seçeneğini belirleyin.
Resource Type
Lingjun kaynakları için oluşturduğunuz kaynak kotasını seçin.
Framework
PyTorch seçeneğini belirleyin.
Job Resource
Worker düğümü için aşağıdaki parametreleri yapılandırın:
Nodes: 2. Çok düğümlü eğitim gerçekleştirmek için Nodes değerini gereken makine sayısına ayarlayın.
GPUs: 8
vCPUs: 90
NotCPU çekirdek sayısı 96'yı aşamaz.
Memory (GiB): 1024
Shared Memory (GiB): 1024
OK seçeneğini tıklayın. Sayfa otomatik olarak Deep Learning Containers (DLC) sayfasına gider. Status durumu Succeeded olarak değiştiğinde eğitim görevi başarılı olur.
Denetimli öğrenme ile modeli ince ayarlayın
Modeli tek bir DSW örneğinde ince ayarlayın veya DLC ortamında dağıtılmış bir görev gönderin. Eğitim yaklaşık iki saat sürer. Model dosyaları /mnt/workspace/output_megatron_qwen/ dizinine kaydedilir.
İnce ayar yapmadan önce Adım 2: Ön eğitim verilerini hazırlayın bölümüne gidin ve Use the small-scale sample data processed by PAI sekmesinden JSON dosyasını indirin.
-
Modeli ince ayarlayın.
Modeli tek bir DSW örneğinde ince ayarlayın
Terminalde Qwen-7B modeli için aşağıdaki komutu çalıştırın:
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/run_finetune_megatron_qwen_withGA.sh betiğinin parametreleri:
Parametre
Açıklama
ENV=$1
çalışma ortamı:
dlc
dsw
MEGATRON_PATH=$2
açık kaynak Megatron kodunun yolu.
MODEL_SIZE=$3
model boyutu: 7B, 14B veya 72B.
BATCH_SIZE=$4
her GPU'da bir eğitim iterasyonu için örnek sayısı: 1, 2, 4 veya 8.
GLOBAL_BATCH_SIZE=$5
bir ince ayar iterasyonu için toplam örnek sayısı: 64, 96 veya 128.
LR=$6
öğrenme oranı: 1e-5 veya 5e-5.
MIN_LR=$7
minimum öğrenme oranı: 1e-6 veya 5e-6.
SEQ_LEN=$8
dizi uzunluğu.
PAD_LEN=$9
dolgu dizi uzunluğu.
EXTRA_VOCAB_SIZE=${10}
ek sözlük boyutu:
Qwen-7B: 85.
Qwen-14B: 213.
Qwen-72B: 213.
PR=${11}
eğitim hassasiyeti: fp16 veya bf16.
TP=${12}
model paralelliği derecesi.
PP=${13}
işlem hattı paralelliği derecesi.
AC=${14}
aktivasyon kontrol noktası modu: full veya sel.
DO=${15}
VRAM kullanımını azaltmak için Zero-1 optimize edicisinin Megatron sürümünün kullanılıp kullanılmayacağını belirtir:
true
false
FL=${16}
Flash Attention'ın etkinleştirilip etkinleştirilmeyeceğini belirtir:
true
false
SP=${17}
Dizi paralelliğinin kullanılıp kullanılmayacağını belirtir:
true
false
TE=${18}
Transformer-engine hızlandırmanın etkinleştirilip etkinleştirilmeyeceğini belirtir. Bu özellik gu8xf GPU'lar gerektirir.
SAVE_INTERVAL=${19}
modelin kaydedilmesi için adım aralığı.
DATASET_PATH=${20}
eğitim veri kümesinin yolu.
VALID_DATASET_PATH=${21}
doğrulama kümesinin yolu.
PRETRAIN_CHECKPOINT_PATH=${22}
ön eğitilmiş modelin yolu.
TRAIN_ITERS=${23}
eğitim iterasyonu sayısı.
LR_WARMUP_ITERS=${24}
öğrenme oranının en çok arttığı adım.
OUTPUT_BASEPATH=${25}
çıktı model dosyalarının kaydedileceği yol.
Modeli DLC üzerinde dağıtılmış eğitimle ince ayarlayın
Tek bir DSW örneğinde hata ayıkladıktan sonra, DLC ortamında çoklu GPU sunucularıyla dağıtılmış bir görev yapılandırın. DLC eğitim görevini gönderirken Startup Command seçeneğini aşağıdaki gibi yapılandırın. Diğer parametreler Adım 2: Modeli ön eğitin bölümündekilerle aynıdır.
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/run_finetune_megatron_qwen_withGA.sh betiğinin parametreleri, tek bir DSW örneğinde ince ayar yapmak için kullanılan parametrelerle aynıdır.
Adım 4: Çevrimdışı çıkarım gerçekleştirin
Eğitimden sonra çevrimdışı çıkarım ve model değerlendirmesi için Megatron çıkarım işlem hattını kullanın.
-
Test örneğini pred_input.jsonl indirin ve DSW'deki
/mnt/workspacedizinine yükleyin. Dosyaları yükleyin ve indirin.NotÇıkarım için veri yapısı, ince ayar sırasında kullanılan yapıyla eşleşmelidir.
-
Tüm JSON dosyalarını ve tokenizer.model dosyasını ön eğitim modeli yolundan oluşturulan model yoluna kopyalayın. Oluşturulan model yolu,
{OUTPUT_BASEPATH }/checkpointaltındaki alt dizindir ve latest_checkpointed_iteration.txt dosyası ile aynı düzeydedir.NotKomuttaki yolları gerçek yollarınızla değiştirin.
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/ -
Terminalde çevrimdışı çıkarım gerçekleştirmek için aşağıdaki komutu çalıştırın. Çıkarım sonuçları
/mnt/workspace/qwen_pred.txtdosyasına kaydedilir. Modelin performansını sonuçlara göre değerlendirin.NotKomutu çalıştırmadan önce run_text_generation_megatron_qwen.sh betiğinde CUDA_VISIBLE_DEVICES parametresini 0 ve GPUS_PER_NODE parametresini 1 olarak ayarlayın.
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.2Aşağıdaki tabloda run_text_generation_megatron_qwen.sh betiğinin parametreleri açıklanmıştır.
Parametre
Açıklama
ENV=$1
çalışma ortamı:
dlc
dsw
MEGATRON_PATCH_PATH=$2
Megatron Patch kodunun yolu.
CHECKPOINT_PATH=$3
modelin eğitim aşamasında kaydedildiği yol.
ÖnemliBu değeri kendi model yolunuzla değiştirin.
MODEL_SIZE=$4
model boyutu: 7B, 14B veya 72B.
TP=$5
model paralelliği derecesi.
ÖnemliBu parametre 1 olarak ayarlanırsa çıkarım için tek bir GPU kullanın.
Bu parametre 1'den büyük bir değere ayarlanırsa çıkarım için ilgili sayıda GPU kullanın.
BS=$6
her GPU'da bir çıkarım iterasyonu için örnek sayısı: 1, 4 veya 8.
SEQ_LEN=$7
dizi uzunluğu: 256, 512 veya 1024.
PAD_LEN=$8
PAD uzunluğu: Metnin doldurulduğu uzunluk.
EXTRA_VOCAB_SIZE=${9}
model dönüştürme sırasında eklenen belirteç sayısı:
Qwen-7B: 85.
Qwen-14B: 213.
Qwen-72B: 213.
PR=${10}
çıkarım için kullanılan hassasiyet: fp16 veya bf16.
TOP_K=${11}
top-k filtreleme için korunacak en yüksek olasılıklı sözlük belirteci sayısı (0 ile n arasında): 0, 5, 10 veya 20.
INPUT_SEQ_LEN=${12}
giriş dizi uzunluğu: 512.
OUTPUT_SEQ_LEN=${13}
çıktı dizi uzunluğu: 256.
INPUT_FILE=${14}
çıkarım için metin dosyası: pred_input.jsonl. Her satır bir örnektir.
OUTPUT_FILE=${15}
çıkarım için çıktı dosyası: qwen_pred.txt.
TOP_P=${16}
top-p filtreleme için kümülatif olasılık (0 ile 1 arasında): 0, 0,85 veya 0,95.
NotTOP_K ve TOP_P parametrelerinden yalnızca biri sıfırdan farklı olabilir.
TEMPERATURE=${17}
(örnekleme)(policy) içindeki sıcaklık cezası: 1–n.
REPETITION_PENALTY=${18}
tekrar cezası. Değer 1 ile 2 arasında olabilir. Varsayılan değer 1,2'dir.
Adım 5: Model biçimini dönüştürün
Eğitilen Megatron modelini çevrimiçi dağıtım için HuggingFace biçimine dönüştürün.
-
Megatron modelini HuggingFace biçimine dönüştürmek için aşağıdaki komutu çalıştırın.
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 \ trueAşağıdaki tabloda model_convertor.sh betiğinin parametreleri açıklanmıştır.
Parametre
Açıklama
MEGATRON_PATH=$1
açık kaynak Megatron kodunun yolu.
SOURCE_CKPT_PATH=$2
eğitimden elde edilen Megatron modelinin yolu. Yol,
iter_dizinine özel olmalıdır. Örneğin:${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_**.ÖnemliBu değeri kendi model yolunuzla değiştirin.
Dönüştürme için ön eğitilmiş bir model kullanıyorsanız model yolundaki tüm distrib_optim.pt dosyalarını silin.
TARGET_CKPT_PATH=$3
dönüştürülen HuggingFace modelinin kaydedileceği yol.
TP=$4
tensor paralelliği parça sayısı. Bu değer, eğitimde kullanılan sayı ile aynı olmalıdır.
PP=$5
işlem hattı paralelliği parça sayısı. Bu değer, eğitimde kullanılan sayı ile aynı olmalıdır.
MN=$6
model adı: qwen-7b, qwen-14b veya qwen-72b.
EXTRA_VOCAB_SIZE=$7
ek sözlük boyutu.
mg2hf=$8
Bir Megatron modelinin HuggingFace modeline dönüştürülüp dönüştürülmeyeceğini belirtir.
-
Açık kaynak HuggingFace model klasörü
/mnt/workspace/qwen-ckpts/qwen-7b-hfiçindeki.json,.pyve.tiktokendosyalarını/mnt/workspace/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1dizinine kopyalayarak modelin kullanılabilir olduğundan emin olun.Önemlipytorch_model.bin.index.json dosyasını kopyalamanız gerekmediğini unutmayın.
Adım 6: Model hizmetini dağıtın ve çağırın
HuggingFace modelini çevrimiçi çıkarım hizmeti olarak dağıtın.
Model hizmetini dağıtın
PAI konsoluna giriş yapın. Sayfanın üst kısmından bir bölge seçin. Ardından istenen çalışma alanını seçin ve Enter Elastic Algorithm Service (EAS) seçeneğini tıklayın.
Deploy Service seçeneğini tıklayın. Inference Service bölümünde, Custom Model Deployment bölümündeki Custom Deployment seçeneğini tıklayın.
-
Custom Deployment sayfasında aşağıdaki anahtar parametreleri yapılandırın ve diğer parametreler için varsayılanları koruyun.
Parametre
Açıklama
Basic Information
Service Name
Bölge içinde benzersiz olan özel bir model hizmeti adı girin. Bu kılavuzda test_qwen kullanılmaktadır.
Environment Information
Deployment Method
Image-based Deployment seçeneğini belirleyin ve Enable Web App seçeneğini işaretleyin.
Image Configuration
Image Address seçeneğini belirleyin ve metin kutusuna aşağıdaki kayıt defteri adresini girin:
eas-registry-vpc.cn-wulanchabu.cr.aliyuncs.com/pai-eas/chat-llm-webui:3.0.4-vllm.Directly Mount
Bağlama türü olarak NAS seçeneğini belirleyin. Standard NAS seçeneğini tıklayın ve aşağıdaki parametreleri yapılandırın:
Select File System: Veri kümesini oluşturmak için kullandığınız NAS dosya sistemini seçin.
Mount Target: Veri kümesini oluşturmak için kullandığınız bağlama hedefini seçin.
File System Path: Bunu, NAS'ta depolanan dönüştürülmüş HuggingFace modelinin yoluna ayarlayın. Bu kılavuzda
/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1kullanılmaktadır.Mount Path: Bağlandıktan sonraki yolu belirtin. Bu kılavuzda
/qwen-7bkullanılmaktadır.
Command
Bunu
python webui/webui_server.py --port=8000 --model-path=/qwen-7b --tensor-parallel-size 1 --backend=vllmolarak ayarlayın.Burada:
--model-path: Model yapılandırmasındaki bağlama yolu ile aynı olmalıdır.
--tensor-parallel-size: Model için tensor paralelliği parça sayısı. Bu değer, GPU sayısına göre ayarlanmalıdır. 7B model için 1, 72B model için 8 olarak ayarlayın (sekiz GPU'lu örnek gerekir).
Port Number
Bunu 8000 olarak ayarlayın.
Resource Information
Resource Type
Resource Quota seçeneğini belirleyin.
Resource Quota
Lingjun kaynakları için oluşturduğunuz kaynak kotasını seçin.
Instance Count
Bunu modele ve seçilen kaynaklara göre yapılandırın. 7B model için Instance Count değerini 1 olarak ayarlayın.
Deployment
7B model için her örneğin kullandığı kaynakları aşağıdaki gibi yapılandırın:
vCPUs: 16.
Memory (GB): 64.
GPUs: 1.
Service Access
VPC
NAS bağlama hedefini yapılandırdıktan sonra sistem, VPC, vSwitch ve güvenlik grubunu önceden ayarlanmış NAS dosya sistemiyle otomatik olarak eşleştirir.
vSwitch
Security Group Name
-
Deploy seçeneğini tıklayın.
Service Status durumu Running olarak değiştiğinde hizmet dağıtılmış olur.
Hizmeti çağırın
Dağıtılan hizmeti çıkarım için çağırın.
Hizmet listesinde hedef hizmetin adını tıklayın. Sayfanın sağ üst köşesinde View Web App seçeneğini tıklayın.
WebUI sayfasında model çıkarımı gerçekleştirin.