mistral-finetune
adalah basis kode ringan yang memungkinkan penyetelan model Mistral yang hemat memori dan berkinerja baik. Hal ini didasarkan pada LoRA, sebuah paradigma pelatihan di mana sebagian besar bobot dibekukan dan hanya 1-2% bobot tambahan dalam bentuk gangguan matriks peringkat rendah yang dilatih.
Untuk efisiensi maksimal disarankan menggunakan GPU A100 atau H100. Basis kode dioptimalkan untuk pengaturan pelatihan multi-GPU-single-node, tetapi untuk model yang lebih kecil, seperti 7B, satu GPU saja sudah cukup.
Catatan
Tujuan dari repositori ini adalah untuk menyediakan titik masuk yang sederhana dan terpandu untuk menyempurnakan model Mistral. Oleh karena itu, ini cukup berpendirian (terutama seputar pemformatan data) dan tidak bertujuan untuk menjelaskan secara menyeluruh berbagai arsitektur model atau jenis perangkat keras. Untuk pendekatan yang lebih umum, Anda dapat melihat beberapa proyek hebat lainnya seperti torchtune.
13.08.2024 : Mistral Large v2 kini kompatibel dengan mistral-finetune
!
Disarankan untuk menggunakan kecepatan pembelajaran yang lebih rendah dibandingkan dengan model lain, misalnya lr=1e-6 akan berfungsi dengan baik pada sebagian besar kasus.
Penyempurnaan Mistral-Large v2 memerlukan memori yang jauh lebih besar karena ukuran model yang lebih besar. Untuk saat ini setel seq_len
ke <= 8192
Unduh Instruksi 123B di sini dan atur model_id_or_path
ke direktori pos pemeriksaan yang diunduh.
19.07.2024 : Mistral Nemo sekarang kompatibel dengan mistral-finetune
!
Disarankan untuk menggunakan hyperparameter yang sama seperti untuk 7B v3.
Penyempurnaan Mistral-Nemo saat ini memerlukan lebih banyak memori karena ukuran kosakata yang lebih besar sehingga meningkatkan kebutuhan memori puncak dari kerugian CE (kami akan segera menambahkan kerugian CE yang ditingkatkan di sini). Untuk saat ini setel seq_len
ke <= 16384
Jalankan pip install --upgrade mistral-common
untuk memiliki versi yang mendukung Tekkenizer ( >=1.3.1
).
Unduh Basis atau Instruksi 12B di sini dan atur model_id_or_path
ke direktori pos pemeriksaan yang diunduh.
Untuk memulai penyempurnaan Mistral LoRA, ikuti langkah-langkah berikut:
Kloning repositori ini:
cd $HOME && git clone https://github.com/mistralai/mistral-finetune.git
Instal semua dependensi yang diperlukan:
cd mistral-finetune pip install -r requirements.txt
Kami menyarankan untuk menyempurnakan salah satu model Mistral resmi yang dapat Anda unduh di sini:
Model | Link | Jumlah pemeriksaan |
---|---|---|
Basis 7B V3 | Pangkalan 7B | 0663b293810d7571dad25dae2f2a5806 |
7B Instruksikan v3 | 7B Instruksikan v3 | 80b71fcb6416085bcb4efad86dfb4d52 |
Basis 8x7B V1 | Basis 8x7B | (tautan HF) |
8x7B Instruksikan V1 | Instruksi 8x7B | 8e2d3930145dc43d3084396f49d38a3f |
8x22 Instruksikan V3 | 8x22 Instruksikan | 471a02a6902706a2f1e44a693813855b |
Basis 8x22B V3 | Basis 8x22B | a2fa75117174f87d1197e3a4eb50371a |
12B Instruksikan | Instruksi 12B (Mistral-Nemo) | 296fbdf911cb88e6f0be74cd04827fe7 |
Pangkalan 12B | 12 Pangkalan (Mistral-Nemo) | c5d079ac4b55fc1ae35f51f0a3c0eb83 |
Mistral Besar 2 | Instruksi 123B (Besar v2) | fc602155f9e39151fba81fcaab2fa7c4 |
Pemberitahuan Penting : Untuk 8x7B Base V1 dan 8x7B Instruct V1, perlu menggunakan tokenizer v3 kami dan memperluas ukuran kosakata menjadi 32768 sebelum melakukan penyesuaian. Untuk petunjuk rinci tentang proses ini, lihat bagian "Ekstensi model".
Misalnya, untuk mengunduh model berbasis 7B Anda dapat menjalankan perintah berikut:
mkdir -p ~/${HOME}/mistral_modelscd ${HOME} && wget https://models.mistralcdn.com/mistral-7b-v0-3/mistral-7B-v0.3.tar tar -xf mistral-7B-v0.3.tar -C mistral_models
Pastikan untuk mengubah skrip pelatihan Anda dan menambahkan jalur ke folder yang diunduh sebagai model_id_or_path
.
Misalnya, ubah example/7B.yaml untuk menyertakan jalur absolut ke $HOME/mistral_models/7B
:
model_id_or_path: "/Users/johndoe/mistral_models/7B"
Untuk memastikan pelatihan yang efektif, mistral-finetune
memiliki persyaratan ketat tentang bagaimana data pelatihan harus diformat.
Semua file data harus disimpan dalam file berformat jsonl.
Anda dapat membuat dua jenis file data:
Data pra-pelatihan sesuai dengan data teks biasa yang disimpan dalam kunci "text"
. Misalnya:
{"text": "Teks yang terdapat dalam dokumen n°1"} {"text": "Teks yang terdapat dalam dokumen n°2"}
Saat ini dua jenis instruksi berbeda berikut datanya didukung:
Instruct : data percakapan yang disimpan di kunci "messages"
dalam bentuk daftar. Setiap item daftar adalah kamus yang berisi kunci "content"
dan "role"
. "role"
adalah string yang merupakan salah satu dari "pengguna", "asisten" atau "sistem". Kerugian hanya akan dihitung jika "role" == "assistant". Misalnya:
{ "pesan": [ { "role": "user", "content": "Interaksi pengguna n°1 terdapat dalam dokumen n°1" }, { "role": "asisten", "konten": "Interaksi bot n°1 terdapat dalam dokumen n°1" }, { "role": "user", "content": "Interaksi pengguna n°2 terdapat dalam dokumen n°1" }, { "role": "asisten", "konten": "Interaksi bot n°2 terdapat dalam dokumen n°1" } ] } { "pesan": [ { "role": "user", "content": "Interaksi pengguna n°1 terdapat dalam dokumen n°2" }, { "role": "asisten", "konten": "Interaksi bot n°1 terkandung dalam dokumen n°2" }, { "role": "user", "content": "Interaksi pengguna n°2 terdapat dalam dokumen n°2" }, { "role": "asisten", "konten": "Interaksi bot n°2 terkandung dalam dokumen n°2", "bobot": 0, # jangan berlatih di n°2 }, { "role": "user", "content": "Interaksi pengguna n°3 terdapat dalam dokumen n°2" }, { "role": "asisten", "konten": "Interaksi bot n°3 terkandung dalam dokumen n°2" } ] }
Pemanggilan fungsi : data percakapan yang disimpan di tombol "messages"
dalam bentuk daftar. Setiap item daftar adalah kamus yang berisi kunci "role"
dan "content"
atau "tool_calls"
. "role"
adalah string yang merupakan salah satu dari "pengguna", "asisten", "sistem", atau "alat". Kerugian hanya akan dihitung jika "role" == "assistant".
Catatan : Dalam fungsi yang memanggil "id"
dari "tool_calls"
dan "tool_call_id"
adalah string yang dihasilkan secara acak dengan tepat 9 karakter. Kami menyarankan untuk membuat ini secara otomatis dalam skrip persiapan data seperti yang dilakukan di sini.
Misalnya:
{ "pesan": [ { "role": "system", "content": "Anda adalah asisten berguna yang memiliki akses ke fungsi-fungsi berikut untuk membantu pengguna, Anda dapat menggunakan fungsi-fungsi tersebut jika diperlukan" }, { "role": "user", "content": "Dapatkah Anda membantu saya membuat anagram dari kata "listen"?" }, { "peran": "asisten", "alat_panggilan": [ { "id": "TX92Jm8Zi", "type": "fungsi", "fungsi": { "nama": "generate_anagram", "argumen": "{"word": "listen"}" } } ] }, { "peran": "alat", "konten": "{"anagram": "silent"}", "tool_call_id": "TX92Jm8Zi" }, { "role": "asisten", "konten": "Anagram dari kata "mendengarkan" adalah "diam"." }, { "role": "user", "content": "Luar biasa! Bisakah Anda membuat anagram untuk kata "ras"?" }, { "peran": "asisten", "alat_panggilan": [ { "id": "3XhQnxLsT", "type": "fungsi", "fungsi": { "nama": "generate_anagram", "argumen": "{"word": "race"}" } } ] } ], "peralatan": [ { "type": "function", "function": { "name": "generate_anagram", "description": "Buat anagram dari kata tertentu", "parameters": { "type": "object", " properti": { "kata": { "type": "string", "description": "Kata untuk menghasilkan anagram" } }, "wajib": [ "kata" ] } } } ] }
Sebelum memulai pelatihan, Anda harus memverifikasi bahwa kumpulan data Anda diformat dengan benar dan mendapatkan perkiraan waktu pelatihan. Anda dapat melakukannya dengan menggunakan skrip ./utils/validate_data.
Perhatikan bahwa langkah ini penting untuk memastikan bahwa data diformat dengan benar.
Mari kita lihat contoh sederhana untuk melatih model dalam instruksi berikut:
Muat sebagian Ultachat_200k
Buat folder data dan navigasikan ke folder tersebut.
cd $HOME && mkdir -p data && cd $HOME/data
Muat data ke dalam Pandas Dataframe.
Catatan : Pastikan pandas dan pyarrow sudah terinstal ( pip install pandas pyarrow
).
impor panda sebagai pddf = pd.read_parquet('https://huggingface.co/datasets/HuggingFaceH4/ultrachat_200k/resolve/main/data/test_gen-00000-of-00001-3d4cd8309148a71f.parquet')
Dibagi menjadi kereta dan evaluasi
df_train=df.sample(frac=0,95,random_state=200)df_eval=df.drop(df_train.index)
Simpan data ke jsonl
df_train.to_json("ultrachat_chunk_train.jsonl", orient="catatan", garis=True)df_eval.to_json("ultrachat_chunk_eval.jsonl", orient="catatan", garis=Benar)
Ubah yaml pelatihan Anda untuk menyertakan himpunan data ultrachat dan verifikasi yaml
Ubah example/7B.yaml untuk menyertakan jalur absolut ke $HOME/data/ultrachat_chunk_train.jsonl
serta bobot pencampuran kumpulan data untuk pelatihan dan $HOME/data/ultrachat_chunk_eval.jsonl
untuk eval, misalnya
data: instruct_data: "/Users/johndoe/data/ultrachat_chunk_train.jsonl" eval_instruct_data: "/Users/johndoe/data/ultrachat_chunk_eval.jsonl"
Sekarang Anda dapat memverifikasi yaml pelatihan Anda untuk memastikan data diformat dengan benar dan untuk mendapatkan perkiraan waktu pelatihan Anda.
cd $HOME/mistral-finetune python -m utils.validate_data --train_yaml example/7B.yaml
Setelah selesai, Anda akan melihat laporan kesalahan dengan banyak kesalahan berikut:
The data in line 1412 of dataset /Users/johndoe/data/ultrachat_chunk_eval.jsonl is incorrectly formatted. Expected last role to be one of: [assistant] but got user The data in line 1413 of dataset /Users/johndoe/data/ultrachat_chunk_eval.jsonl is incorrectly formatted. Expected last role to be one of: [assistant] but got user The data in line 1414 of dataset /Users/johndoe/data/ultrachat_chunk_eval.jsonl is incorrectly formatted. Expected last role to be one of: [assistant] but got user The data in line 1415 of dataset /Users/johndoe/data/ultrachat_chunk_eval.jsonl is incorrectly formatted. Expected last role to be one of: [assistant] but got user
Banyak percakapan yang tampaknya berakhir dengan peran 'pengguna' yang tidak diperlukan karena kami hanya melatih pesan 'asisten' sehingga tidak perlu memproses data.
Anda dapat menggunakan ./utils/reformat_data.py untuk memperbaiki data:
cd $HOME/mistral-finetune python -m utils.reformat_data $HOME/data/ultrachat_chunk_train.jsonl python -m utils.reformat_data $HOME/data/ultrachat_chunk_eval.jsonl
Anda akan melihat bahwa beberapa sampel akan dilewati.
Berpotensi mengubah jumlah langkah pelatihan
Setelah kumpulan data diperbaiki, jalankan skrip lagi
cd $HOME/mistral-finetune python -m utils.validate_data --train_yaml example/7B.yaml
Anda harus mendapatkan ringkasan input data dan parameter pelatihan:
Train States -------------------- { "expected": { "eta": "00:52:44", "data_tokens": 25169147, "train_tokens": 131072000, "epochs": "5.21", "max_steps": 500, "data_tokens_per_dataset": { "/Users/johndoe/data/ultrachat_chunk_train.jsonl": "25169147.0" }, "train_tokens_per_dataset": { "/Users/johndoe/data/ultrachat_chunk_train.jsonl": "131072000.0" }, "epochs_per_dataset": { "/Users/johndoe/data/ultrachat_chunk_train.jsonl": "5.2" } }, }
Menyetel max_steps
ke 500 akan menyebabkan pengulangan kumpulan data kira-kira 5 kali, yang merupakan hal yang wajar, tetapi mungkin terlalu berlebihan. Pengaturan yang disarankan ditunjukkan di bawah ini yang hanya membutuhkan waktu 30 menit pada cluster 8xH100.
Selanjutnya mari kita membahas kasus penggunaan lebih lanjut untuk menyempurnakan model pada pemanggilan fungsi. Pemanggilan fungsi memerlukan data dalam format seperti yang dijelaskan di atas. Mari kita lihat sebuah contoh.
Memuat versi himpunan data pemanggilan fungsi Glaive yang diformat obrolan
Buat folder data dan navigasikan ke folder tersebut.
cd $HOME && mkdir -p data && cd $HOME/data
Muat data ke dalam Pandas Dataframe.
Catatan : Pastikan pandas dan pyarrow sudah terinstal ( pip install pandas pyarrow
).
impor panda sebagai pddf = pd.read_parquet('https://huggingface.co/datasets/Locutusque/function-calling-chatml/resolve/main/data/train-00000-of-00001-f0b56c6983b4a78f.parquet')
Dibagi menjadi kereta dan evaluasi
df_train=df.sample(frac=0,95,random_state=200)df_eval=df.drop(df_train.index)
Simpan data ke jsonl
df_train.to_json("glaive_train.jsonl", orient="records", baris=True)df_eval.to_json("glaive_eval.jsonl", orient="records", baris=True)
Format ulang kumpulan data
Seperti yang dapat dilihat, kumpulan data tidak mengikuti format pemanggilan fungsi yang diperlukan, sehingga perlu diformat ulang. Antara lain, "from"
harus diganti namanya menjadi "user"
dan karakter "n"
yang berlebihan harus dihapus. Untuk kumpulan data ini Anda dapat menggunakan ./utils/reformat_data_glaive.py
:
cd $HOME/mistral-finetune python -m utils.reformat_data_glaive $HOME/data/glaive_train.jsonl python -m utils.reformat_data_glaive $HOME/data/glaive_eval.jsonl
Menjalankan perintah ini akan memastikan bahwa sebagian besar sampel berada dalam format yang benar.
Catatan : Tidak mungkin menulis skrip pemformatan ulang yang berfungsi untuk semua jenis kumpulan data. Jika Anda memiliki kumpulan data yang belum mengikuti format wajib di atas, kemungkinan besar Anda harus membuat skrip pemformatan ulang sendiri (mistral-chat atau chat-gpt adalah teman terbaik Anda di sini!).
Validasi kumpulan data
Anda sekarang dapat memvalidasi kumpulan data dengan menyetel data.instruct_data
dan data.eval_instruct_data
ke $HOME/data/glaive_train.jsonl
dan $HOME/data/glaive_eval.jsonl
masing-masing di example/7B.yaml
.
Kumpulan data yang diformat ulang masih memiliki beberapa kesalahan yang dapat dihilangkan dengan --create_corrected
. Untuk ini, pastikan untuk menambahkan --create_corrected
sebagai berikut:
cd $HOME/mistral-finetune python -m utils.validate_data --train_yaml example/7B.yaml --create_corrected
Menjalankan perintah ini akan menampilkan beberapa kesalahan dan menyimpan dua kumpulan data baru $HOME/data/glaive_train.jsonl.corrected
dan $HOME/data/glaive_eval.jsonl.corrected
. Corrected . Pastikan untuk menggunakan dua kumpulan data ini di example/7B.yaml
dan jalankan perintah lagi. Sekarang kumpulan data harus diformat dengan benar!
Setelah mengikuti bagian verifikasi dataset, sekarang kita dapat memulai pelatihan. Untuk pelatihan yang lebih cepat, sebaiknya setel max_steps ke hanya 300. Pastikan untuk menentukan run_dir
ke folder eksperimen Anda dan secara opsional setel wandb_project
ke proyek Weights & Biases untuk logging`, misalnya :
max_steps: 300 run_dir: "/Users/johndoe/ultra_chat_test" wandb.project: ultra_chat
Secara opsional, Anda juga dapat mengatur wandb
Simpan konfigurasi pelatihan dan mulai pelatihan! Pastikan untuk menyetel --nproc-per-node
ke jumlah GPU yang tersedia.
cd $HOME/mistral-finetune torchrun --nproc-per-node 8 --master_port $RANDOM -m train example/7B.yaml
Pelatihan ultra-chat akan memakan waktu sekitar 30 menit pada node 8xH100 dan bobot yang dihasilkan akan memberikan skor MT Bench sekitar 6,3.
Pelatihan tentang glaive akan memakan waktu sekitar 1 jam pada node 8xH100 dan bobot yang dihasilkan akan berfungsi dengan baik untuk pemanggilan fungsi.
Contoh mistral-finetune/examples/7B
mendefinisikan parameter yang masuk akal untuk kecepatan pembelajaran, penurunan bobot, dll... tetapi Anda disarankan untuk menyesuaikan pengaturan ini untuk kasus penggunaan Anda.
Umumnya, konfigurasi pelatihan harus memenuhi parameter berikut:
model_id_or_path
mendefinisikan model tempat pelatihan dimulai. Ini bisa berupa jalur ke model terlatih atau direktori model lokal.
run_dir
mendefinisikan direktori tempat pos pemeriksaan dan metrik pelatihan disimpan.
seq_len
mendefinisikan panjang urutan untuk pelatihan. Ini adalah panjang maksimum rangkaian masukan yang akan diproses model. Sampel dikemas hingga mencapai panjang seq_len
untuk efisiensi pelatihan maksimum.
batch_size
menentukan jumlah contoh pelatihan yang digunakan per GPU. Catatan : Batch_size efektif keseluruhan (dalam token) di semua GPU sama dengan num_gpus
x batch_size
x seq_len
.
max_steps
menentukan jumlah maksimum langkah pelatihan. Ini adalah jumlah total iterasi yang akan dijalankan oleh proses pelatihan. Ini dapat disesuaikan berdasarkan kebutuhan spesifik skenario pelatihan Anda. Jumlah total token yang terlihat selama pelatihan adalah max_steps
x num_gpus
x batch_size
x seq_len
.
optim.lr
mendefinisikan kecepatan pembelajaran. Ini adalah kecepatan pembelajaran awal untuk pengoptimal.
optim.weight_decay
mendefinisikan penurunan berat badan. Penurunan berat badan adalah teknik regularisasi yang digunakan untuk mencegah overfitting dengan memberikan penalti pada beban yang besar. Kami menyarankan untuk membiarkannya pada 0,1.
optim.pct_start
menentukan persentase total langkah pelatihan yang digunakan untuk fase pemanasan kecepatan pembelajaran sebelum mulai menurun. Ini sesuai dengan pct_start dari OneCycleLR PyTorch.
lora.rank
mendefinisikan ukuran adaptor LoRA (Adaptasi Tingkat Rendah). Kami merekomendasikan 64 atau kurang, yang menyesuaikan peringkat dekomposisi peringkat rendah yang digunakan di LoRA.
seed
mendefinisikan seed acak untuk inisialisasi dan pengacakan/pengambilan sampel data. Menetapkan benih memastikan reproduktifitas hasil.
log_freq
mendefinisikan frekuensi logging. Ini menentukan seberapa sering (dalam langkah-langkah) mencatat metrik pelatihan.
data.instruct_data
adalah jalur ke data instruksi yang digunakan untuk pelatihan. Field ini harus diisi dengan satu atau beberapa sumber data dengan format seperti yang dijelaskan di atas. Setiap sumber data harus berupa jalur ke file jsonl atau jalur ke direktori yang berisi file jsonl diikuti dengan bobot untuk menentukan pentingnya kumpulan data ini:
. Misalnya: data.instruct_data: "/path/to/data1.jsonl:5.,/path/to/data2.jsonl:1.,/path/to/dir_of_jsonls:1."
data.data
adalah jalur opsional ke data prapelatihan tambahan dalam format seperti yang dijelaskan di atas. Perhatikan bahwa bidang ini boleh dikosongkan.
data.eval_instruct_data
adalah jalur opsional untuk mengevaluasi data instruksi untuk menjalankan validasi silang di setiap langkah eval_freq
. Metrik validasi silang ditampilkan sebagai loss
dan perplexity
.
eval_freq
menentukan seberapa sering (dalam langkah) mengevaluasi model. Ini menentukan interval evaluasi model pada set validasi.
no_eval
adalah tanda untuk mengaktifkan atau menonaktifkan evaluasi perantara. Menyetelnya ke False memungkinkan evaluasi berkala selama pelatihan.
ckpt_freq
menentukan seberapa sering (dalam langkah) untuk menyimpan pos pemeriksaan. Ini menentukan interval penyimpanan status model.
save_adapters
menentukan apakah hanya akan menyimpan pos pemeriksaan LoRA yang dilatih atau apakah LoRA yang dilatih harus langsung digabungkan ke dalam model dasar dan disimpan. Catatan : Saat mengatur save_adapters=False
pastikan Anda memiliki cukup memori CPU dan GPU untuk menyimpan model lengkap dalam satu proses (ini biasanya hanya mungkin untuk model 7B).
wandb.key
digunakan untuk meneruskan kunci API Bobot & Bias (wandb) Anda untuk pencatatan. Ini memungkinkan Anda mencatat metrik pelatihan ke dasbor Wandb.
wandb.project
mendefinisikan nama proyek Wandb. Di sinilah proses pelatihan akan dicatat di antarmuka Wandb.
Setelah model Anda dilatih, Anda harus mencobanya dalam inferensi. Kami merekomendasikan penggunaan inferensi mistral.
Pastikan mistral_inference
diinstal dengan benar:
pip install mistral_inference
Dengan asumsi lora.safetensors
Anda disimpan di $HOME/ultra_chat_test/checkpoints/checkpoint_000300/consolidated/lora.safetensors
, Anda dapat mengobrol dengan model menggunakan mistral_inference
, misalnya :
mistral-chat /mnt/slow/runs/patrick/mistral-finetune/7B/ --max_tokens 256 --temperature 1.0 --instruct --lora_path $HOME/ultra_chat_test/checkpoints/checkpoint_000300/consolidated/lora.safetensors
Kami telah menambahkan dukungan eksplisit untuk Bobot dan Bias untuk membantu Anda memantau dan memvisualisasikan proses pelatihan Anda. Integrasi ini memungkinkan Anda mencatat berbagai metrik dan melacak eksperimen dengan mudah.
Untuk menggunakan Bobot dan Bias dengan mistral-finetune
, ikuti langkah-langkah berikut:
Instal Bobot dan Bias:
Pastikan Anda telah menginstal perpustakaan wandb
. Anda dapat menginstalnya menggunakan pip:
pip instal tongkatb
Setelah pelatihan dimulai, Anda dapat memantau kemajuannya secara real-time dengan mengunjungi dasbor proyek tongkat sihir Anda. Semua metrik, termasuk kerugian pelatihan, kerugian evaluasi, kecepatan pembelajaran, dll., akan dicatat dan divisualisasikan.
Untuk detail lebih lanjut tentang cara menggunakan tongkat sihir, kunjungi dokumentasi Bobot dan Bias.
Penting : Perhatikan bahwa seseorang hanya dapat menyempurnakan model mistral yang kompatibel dengan tokenizer v3 yang mengharuskan model tersebut memiliki ukuran kosakata 32768 - bukan 32000. Namun seseorang dapat dengan mudah memperluas ukuran kosakata versi lama 32000 untuk memiliki ukuran kosakata dari 32768 dengan menggunakan:
python -m utils.extend_model_vocab --original_model_ckpt /folder/to/old/model --extended_model_ckpt /folder/to/extended/model
Setelah ekstensi berfungsi, seseorang dapat menyempurnakannya menggunakan pos pemeriksaan model yang baru dibuat di /folder/to/extended/model
.
Apa praktik terbaik dalam menyempurnakan MoE?
Kami melihat tingkat varians kinerja yang lebih tinggi ketika menyempurnakan model MoE. Bukan hal yang aneh untuk menemukan bahwa penyempurnaan model MoE dengan benih yang berbeda dapat menghasilkan variasi kinerja yang tinggi. Kami tidak melihat varian yang begitu tinggi pada model padat. Oleh karena itu, kami menyarankan untuk menjalankan beberapa contoh proses penyesuaian yang sama pada model KLH dan memilih salah satu yang memiliki kinerja terbaik.
Bagaimana cara menentukan jumlah token yang digunakan selama proses pelatihan model?
Anda dapat menggunakan skrip berikut untuk mengetahuinya: https://github.com/mistralai/mistral-finetune/blob/main/utils/validate_data.py. Skrip ini menerima file pelatihan .yaml sebagai masukan dan mengembalikan jumlah token tempat model dilatih.
Apa yang harus saya lakukan jika saya mengalami kesalahan CUDA kehabisan memori?
Salah satu solusi yang mungkin adalah mengurangi ukuran batch per GPU. Ukuran batch sama dengan seq_len
x batch_size
. Coba atur batch_size
ke 1 dan kurangi seq_len
. Anda dapat menentukan batch_size
dan seq_len
di file .yaml.