Data Science Workshop (DSW) dari Platform for AI (PAI) adalah platform pemodelan interaktif yang memungkinkan Anda menyempurnakan model kustom dan mengoptimalkan kinerja model. Topik ini menjelaskan cara menyempurnakan parameter model Llama 3 di DSW untuk menyesuaikan model dengan skenario tertentu dan meningkatkan kinerjanya pada tugas-tugas spesifik. Dalam topik ini, model Meta-Llama-3-8B-Instruct digunakan sebagai contoh.
Informasi latar belakang
Llama 3 adalah keluarga model terbaru dalam seri Llama yang dirilis oleh Meta pada April 2024. Llama 3 dilatih menggunakan lebih dari 15 triliun token, sekitar tujuh kali ukuran dataset Llama 2. Llama 3 mendukung hingga 8K token dan tokenizer yang ditingkatkan dengan ukuran kosakata mencapai 128K token, memastikan pemrosesan konteks kompleks dan istilah teknis secara lebih akurat dan efisien.
Llama 3 tersedia dalam versi pra-pelatihan dan instruksi dengan ukuran 8B dan 70B, cocok untuk berbagai skenario.
8B
Llama 3 8B ideal untuk penyebaran dan pengembangan berbasis GPU tingkat konsumen. Versi ini dapat digunakan dalam skenario yang memerlukan kecepatan respons tinggi dan efisiensi biaya.
Meta-Llama-3-8B: versi pra-pelatihan
Meta-Llama-3-8B-Instruct: versi instruksi
70B
Llama 3 70B memanfaatkan jumlah parameter besar dan cocok untuk aplikasi AI berskala besar, tugas lanjutan serta kompleks, dan optimasi performa.
Meta-Llama-3-70B: versi pra-pelatihan
Meta-Llama-3-70B-Instruct: versi instruksi
Prasyarat
Ruang kerja telah dibuat. Untuk informasi lebih lanjut, lihat Membuat dan Mengelola Ruang Kerja.
Instansi DSW telah dibuat. Perhatikan parameter utama berikut. Untuk informasi lebih lanjut, lihat Membuat Instansi DSW.
Tipe instansi: Disarankan menggunakan instansi dengan Memori GPU minimal 16 GB, seperti GPU V100.
Python: Python 3.9 atau yang lebih baru.
Citra: Pada contoh ini, image URL berikut digunakan:
dsw-registry-vpc.REGION.cr.aliyuncs.com/pai-training-algorithm/llm_deepspeed_peft:v0.0.3. GantiREGIONdengan ID wilayah tempat instans DSW Anda berada. Contoh:cn-hangzhouataucn-shanghai. Tabel berikut menjelaskan ID wilayah tersebut.Wilayah
ID Wilayah
Cina (Hangzhou)
cn-hangzhou
Cina (Shanghai)
cn-shanghai
Cina (Beijing)
cn-beijing
Cina (Shenzhen)
cn-shenzhen
Sebelum menggunakan model Llama 3, baca lisensi resmi Meta.
CatatanJika Anda tidak dapat mengakses halaman web tersebut, konfigurasikan proxy dan coba lagi.
Langkah 1: Unduh model
Metode 1: Unduh model di DSW
Masuk ke lingkungan pengembangan DSW.
Masuk ke konsol PAI.
Di bilah navigasi atas, pilih wilayah tempat instansi DSW berada.
Di panel navigasi sisi kiri, klik Workspaces. Di halaman Workspaces, klik nama ruang kerja default.
Di panel navigasi sisi kiri, pilih Model Development and Training > Interactive Modeling (DSW).
Klik Open di kolom Actions instansi DSW yang ingin Anda kelola untuk masuk ke lingkungan pengembangan instansi DSW.
Di tab Launcher, klik Python 3 di panel Notebook bagian Quick Start.
Jalankan kode berikut di Notebook untuk mengunduh file model. Sistem secara otomatis memilih alamat unduhan yang sesuai dan mengunduh file model ke direktori saat ini.
! pip install modelscope==1.32.0 transformers==4.37.0from modelscope.hub.snapshot_download import snapshot_download snapshot_download('LLM-Research/Meta-Llama-3-8B-Instruct', cache_dir='.', revision='master')
Metode 2: Unduh model di Meta
Kunjungi situs web Meta untuk mengajukan model.
Jika Anda tidak dapat mengakses halaman web tersebut, konfigurasikan proxy dan coba lagi.
Langkah 2: Siapkan dataset
Dalam contoh ini, dataset puisi bahasa Inggris digunakan untuk menyempurnakan model Llama 3 guna meningkatkan ekspresivitas puitis dari puisi yang dihasilkan. Jalankan perintah berikut di Notebook DSW untuk mengunduh set data pelatihan yang diperlukan oleh model:
!wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/tutorial/llm_instruct/en_poetry_train.jsonAnda dapat menggunakan dataset yang sesuai dengan skenario bisnis Anda berdasarkan format dataset pelatihan sampel. Anda dapat meningkatkan akurasi respons model bahasa besar (LLM) untuk tugas-tugas tertentu dengan menyempurnakan LLM.
Langkah 3: Menyempurnakan model
Pelatihan LoRA ringan
Pada contoh ini, skrip pelatihan /ml/code/sft.py digunakan untuk melakukan pelatihan Low-Rank Adaptation (LoRA) ringan pada model. Setelah pelatihan, sistem melakukan kuantisasi parameter model untuk mengurangi penggunaan Memori GPU saat inferensi.
Saat Anda menjalankan perintah accelerate launch, sistem menggunakan parameter tersebut untuk menjalankan skrip Python tertentu dan melakukan pelatihan berdasarkan sumber daya komputasi yang ditentukan dalam file konfigurasi multi_gpu.yaml.
! accelerate launch --num_processes 1 --config_file /ml/code/multi_gpu.yaml /ml/code/sft.py \
--model_name ./LLM-Research/Meta-Llama-3-8B-Instruct/ \
--model_type llama \
--train_dataset_name en_poetry_train..json \
--num_train_epochs 3 \
--batch_size 8 \
--seq_length 128 \
--learning_rate 5e-4 \
--lr_scheduler_type linear \
--target_modules k_proj o_proj q_proj v_proj \
--output_dir lora_model/ \
--apply_chat_template \
--use_peft \
--load_in_4bit \
--peft_lora_r 32 \
--peft_lora_alpha 32 Berikut ini menjelaskan parameter yang digunakan dalam contoh ini. Modifikasi parameter berdasarkan kebutuhan bisnis Anda.
Perintah
accelerate launchdigunakan untuk menjalankan dan mengelola skrip pelatihan pembelajaran mendalam pada beberapa GPU.num_processes:jumlah proses paralel. Dalam contoh ini, parameter ini diatur ke 1 untuk menonaktifkan pemrosesan paralel multiproses.config_file/ml/code/multi_gpu.yaml:jalur file konfigurasi./ml/code/sft.py:jalur skrip Python yang ingin Anda jalankan.
Untuk menjalankan skrip
/ml/code/sft.py, konfigurasikan parameter berikut:--model_name./LLM-Research/Meta-Llama-3-8B-Instruct/:jalur model pretrained.--model_type:jenis model. Pada contoh ini, digunakan Llama.--train_dataset_namechinese_medical_train_sampled.json:jalur dataset pelatihan.--num_train_epochs:jumlah epoch pelatihan. Pada contoh ini, parameter diatur ke 3.--batch_size:ukuran batch. Pada contoh ini, parameter diatur ke 8.--seq_length:panjang sekuens. Pada contoh ini, parameter diatur ke 128.--learning_rate:tingkat pembelajaran. Pada contoh ini, parameter diatur ke 5e-4, yang setara dengan 0,0005.--lr_scheduler_type:jenis penjadwal tingkat pembelajaran. Pada contoh ini, parameter diatur ke linear.--target_modules:bagian model yang menjadi fokus selama fine-tuning. Pada contoh ini, parameter diatur ke k_proj o_proj q_proj v_proj.--output_dir:direktori output tempat model hasil fine-tuning disimpan. Pada contoh ini, parameter diatur ke lora_model/.--apply_chat_template:templat chat yang digunakan selama pelatihan.--use_peft:Gunakan Parameter-Efficient Fine-Tuning (PEFT) selama pelatihan.--load_in_4bit:Muat bobot model dengan presisi 4-bit untuk mengurangi konsumsi memori.--peft_lora_r 32: Jika LoRA digunakan sebagai bagian dari metode fine-tuning efisien parameter, nilai ini menentukan nilai 32 untuk LoRA.--peft_lora_alpha: nilai alpha LoRA. Pada contoh ini, parameter diatur ke 32.
Fusi bobot LoRA dengan model
Jalankan perintah berikut untuk menggabungkan bobot LoRA dengan model Llama 3:
! RANK=0 python /ml/code/convert.py \
--model_name ./LLM-Research/Meta-Llama-3-8B-Instruct/ \
--model_type llama \
--output_dir trained_model/ \
--adapter_dir lora_model/Berikut ini menjelaskan parameter dan nilai yang digunakan dalam contoh ini:
RANK=0:Variabel lingkungan RANK digunakan untuk menentukan nomor urut proses saat ini di antara semua proses dalam pelatihan terdistribusi. Nilai 0 menunjukkan bahwa proses saat ini merupakan proses independen atau berperan sebagai proses utama dalam pelatihan terdistribusi.python /ml/code/convert.py:Jalankan skrip convert.py untuk konversi bobot atau tugas konversi lainnya.--model_name ./LLM-Research/Meta-Llama-3-8B-Instruct/:jalur menuju model.--model_type llama:jenis model. Pada contoh ini, digunakan Llama.--output_dir trained_model/:direktori output tempat model dan bobot hasil konversi disimpan.--adapter_dir lora_model/:direktori tempat bobot adapter LoRA berada.
Langkah 4: Lakukan inferensi model
Jalankan perintah berikut untuk melakukan inferensi model dan memverifikasi efek fine-tuning. Dalam contoh ini, model diminta untuk menghasilkan puisi tentang musim semi:
import torch, transformers
# model_id = "./LLM-Research/Meta-Llama-3-8B-Instruct/"
model_id = "./trained_model/"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device="cuda",
)
messages = [
{"role": "user", "content": "Tulis sebuah puisi tentang topik 'musim semi' "},
]
prompt = pipeline.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
terminators = [
pipeline.tokenizer.eos_token_id,
pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = pipeline(
prompt,
max_new_tokens=1024,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,
)
print(outputs[0]["generated_text"][len(prompt):])Berikut ini memberikan contoh respons model, yang menunjukkan bahwa model dapat menghasilkan puisi berkualitas tinggi setelah fine-tuning.
Berikut adalah puisi tentang topik "Musim Semi":
Saat dingin musim dingin mulai memudar,
Bumi terbangun dari bayangannya,
Dan napas manis musim semi mulai berhembus,
Membawa kehidupan bagi semua yang dingin dan lambat.
Pohon-pohon kembali ke warna cerah mereka,
Dan bunga-bunga mekar, baik yang lama maupun yang baru,
Kelopak mereka menari dalam angin sepoi-sepoi,
Saat sinar matahari menghangatkan dunia dengan mudah.
Udara dipenuhi dengan wewangian manis,
Saat bunga-bunga mekar di tempat mereka,
Dan burung robin bernyanyi lagu pagi mereka,
Saat kebangkitan musim semi kuat.
Dunia segar, baru, dan cerah,
Saat cahaya hangat musim semi mulai terbang,
Dan di sekitarnya, kehidupan baru terbuka,
Saat cengkeraman musim dingin mulai menua.
Jadi mari kita nikmati sinar hangat musim semi,
Dan biarkan semangat kita melayang dan bergoyang,
Karena dalam musim ini, kita dilahirkan kembali,
Dan di sekitarnya, kehidupan baru diucapkan.
Semoga Anda menikmatinya!Langkah 5. Terapkan model
Anda dapat mengunggah bobot model yang disempurnakan ke Object Storage Service (OSS) dan menerapkan model Llama 3 yang disempurnakan di Elastic Algorithm Service (EAS) dari PAI. Untuk informasi lebih lanjut, lihat Terapkan Aplikasi LLM di EAS.
Lampiran: Gunakan Llama 3 di DSW Gallery
DSW Gallery menyediakan kasus penggunaan Notebook pada Llama 3. Anda dapat menggunakan kasus tersebut pada instansi DSW berdasarkan kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat Notebook Gallery.
FAQ
T: Terjadi error saat mengunduh model: FileDownloadError: File config.json download imcomlete, content_length: None but the ......
Di Terminal, jalankan pip install -U modelscope untuk melakukan upgrade paket modelscope. Klik ikon
di bagian atas halaman Notebook untuk memuat ulang kernel Python. Kemudian, jalankan kembali kode pengunduhan model.
Referensi
Untuk informasi lebih lanjut tentang versi ChatLLM-WebUI, lihat Catatan Rilis untuk ChatLLM WebUI.