Mixtral-8x7B adalah model bahasa besar (LLM) terbaru yang dirilis oleh Mistral AI. Model ini melampaui performa GPT-3.5 dalam berbagai pengujian benchmark dan merupakan salah satu LLM sumber terbuka paling canggih. Platform for AI (PAI) menyediakan dukungan penuh untuk model Mixtral-8x7B, memungkinkan pengembang dan pengguna perusahaan melakukan fine-tuning serta menyebarkan model secara efisien melalui Model Gallery.
Pengenalan Model
Mixtral-8x7B adalah model bahasa besar (LLM) sumber terbuka berbasis arsitektur Sparse Mixture of Experts (SMoE) (hanya decoder) yang dirilis menggunakan protokol Apache 2.0. Model ini menonjol dengan jaringan router-nya, yang memilih dua dari delapan kelompok ahli untuk memproses setiap token dan menggabungkan output mereka. Meskipun memiliki total 47 miliar parameter, hanya 13 miliar parameter yang aktif digunakan per token, sehingga meningkatkan kecepatan inferensi menjadi sebanding dengan model berukuran 13 miliar parameter.
Mixtral-8x7B mendukung beberapa bahasa, termasuk Prancis, Jerman, Spanyol, Italia, dan Inggris, serta panjang konteks hingga 32.000 token. Performanya mencocokkan atau melampaui model LLaMA2-70B dan GPT-3.5 di semua pengujian benchmark yang dievaluasi. Model ini secara signifikan unggul dalam matematika, pembuatan kode, dan pengujian benchmark multibahasa.

Sumber: https://arxiv.org/abs/2401.04088
Mistral AI juga merilis Mixtral-8x7B-Instruct-v0.1, versi yang telah di-tuned instruksi dari Mixtral-8x7B. Versi ini dioptimalkan menggunakan supervised fine-tuning dan Direct Preference Optimization (DPO), sehingga lebih baik dalam mengikuti instruksi manusia dan meningkatkan kemampuan percakapannya dibandingkan model instruksi sumber terbuka lainnya.

Sumber: https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard
Prasyarat
Sumber daya Lingjun telah dibeli. Untuk informasi lebih lanjut, lihat Membuat grup sumber daya dan membeli sumber daya Lingjun.
Persyaratan Lingkungan
Mixtral-8x7B hanya dapat dijalankan di wilayah China (Ulanqab) dan pada kluster Lingjun karena ukurannya yang besar.
Disarankan menggunakan GPU GU108 (80 GB). Setidaknya dua GPU diperlukan untuk inferensi dan empat GPU untuk Low-Rank Adaptation (LoRA) fine-tuning.
Menggunakan model di konsol PAI
Menyebarkan dan Memanggil Layanan Model
Buka halaman Model Gallery.
Masuk ke Konsol PAI.
Pilih wilayah China (Ulanqab).
Di panel navigasi kiri, klik Workspaces. Pada halaman Workspaces, klik nama workspace yang ingin Anda kelola.
Di panel navigasi kiri, pilih QuickStart > Model Gallery.
Di daftar model pada halaman Model Gallery, klik kartu Mixtral-8x7B-Instruct-v0.1.
Di halaman detail model, klik Deploy di sudut kanan atas. Di panel Deploy, konfigurasikan sumber daya komputasi Lingjun dan klik Deploy.
Model memerlukan Sumber daya Lingjun untuk penyebaran. Pastikan Anda memilih kuota sumber daya dengan setidaknya dua GPU GU108.

Panggil layanan model.
Menggunakan HTTP API
Anda dapat memanggil layanan model menggunakan OpenAI API. Endpoint dan token layanan model dapat diperoleh di halaman detail layanan model. Contoh kode berikut menunjukkan cara memanggil layanan model menggunakan perintah curl:
# Ganti <ENDPOINT> dan <TOKEN> dengan endpoint dan token layanan model Anda. export API_ENDPOINT="<ENDPOINT>" export API_TOKEN="<TOKEN>" # Lihat daftar model. curl $API_ENDPOINT/v1/models \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $API_TOKEN" # Panggil API generasi teks umum. curl $API_ENDPOINT/v1/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $API_TOKEN" \ -d '{ "model": "Mixtral-8x7B-Instruct-v0.1", "prompt": "San Francisco is a", "max_tokens": 256, "temperature": 0 }' curl $API_ENDPOINT/v1/chat/completions \ -H "Authorization: Bearer $API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "model": "Mixtral-8x7B-Instruct-v0.1", "messages": [ {"role": "user", "content": "Perkenalkan sejarah Shanghai"} ] }'Menggunakan SDK
Sebelum memanggil layanan model menggunakan OpenAI SDK, Anda harus menginstal SDK tersebut.
# Instal SDK. python -m pip install openaiContoh kode berikut menunjukkan cara memanggil layanan model menggunakan SDK:
import openai # Ganti <ENDPOINT> dan <TOKEN> dengan endpoint dan token layanan model yang Anda peroleh di halaman detail layanan model. openai.api_key = "<TOKEN>" openai.base_url = "<ENDPOINT>" + "/v1" # Panggil API chat. completion = openai.chat.completions.create( model="Mixtral-8x7B-Instruct-v0.1", temperature=0.0, top_p=0.8, frequency_penalty=0.0, messages=[{"role": "user", "content": "Perkenalkan dirimu."}], # stream=True, ) # Cetak konten output. print(completion.choices[0].message.content)
Melatih Model
Model Gallery menyediakan algoritma fine-tuning siap pakai untuk model Mixtral-8x7B-Instruct-v0.1.
Algoritma fine-tuning mendukung input dalam format JSON. Setiap catatan data terdiri dari query yang ditentukan oleh bidang instruction dan respons yang ditentukan oleh bidang output. Contoh:
[
{
"instruction": "Tulis puisi tentang topik 'On a Political Prisoner': \n",
"output": "Dia yang sedikit sabar,\r\nDari masa kanak-kanak, sekarang begitu banyak\r\nBurung camar abu-abu kehilangan rasa takut dan terbang\r\nTurun ke selnya dan bertengger,\r\nDan di sana menahan sentuhan jarinya\r\nDan dari jarinya memakan sedikit.\r\nApakah dia dalam menyentuh sayap itu."
},
{
"instruction": "Tulis puisi tentang topik 'To His Love': ",
"output": "Dia sudah pergi, dan semua rencana kita\r\n Tidak berguna sama sekali.\r\nKita tidak akan berjalan lagi di Cotswold\r\n Di mana domba makan\r\n Diam-diam dan tidak peduli.\r\n Tubuhnya yang begitu cepat\r\n Tidak seperti yang kamu\r\nKetahui, di sungai Severn\r\n Di bawah biru\r\n Mengayuh perahu kecil kita melalui."
}
]Di halaman model details, klik Train di sudut kanan atas. Di panel Train, konfigurasikan parameter utama berikut:
Konfigurasi Dataset: Tentukan jalur Object Storage Service (OSS) yang berisi dataset yang telah Anda siapkan atau pilih file dataset yang disimpan di File Storage NAS (NAS) atau Cloud Parallel File Storage (CPFS). Anda juga dapat menggunakan jalur default untuk menggunakan dataset publik yang disediakan oleh PAI.
Sumber daya komputasi: Algoritma fine-tuning membutuhkan 4 GPU GU108 dengan memori 80 GB. Pastikan kuota sumber daya yang Anda gunakan memiliki sumber daya komputasi yang cukup.
Hiperparameter: Tabel berikut menjelaskan hiperparameter dari algoritma fine-tuning. Konfigurasikan hiperparameter sesuai kebutuhan bisnis Anda.
Hiperparameter
Tipe
Nilai default
Diperlukan
Deskripsi
learning_rate
float
5e-5
Ya
Tingkat pembelajaran, yang mengontrol sejauh mana model disesuaikan.
num_train_epochs
int
1
Ya
Jumlah epoch. Epoch adalah siklus penuh dari mengekspos setiap sampel dalam set data pelatihan ke algoritma.
per_device_train_batch_size
int
1
Ya
Jumlah sampel yang diproses setiap GPU dalam satu iterasi pelatihan. Nilai yang lebih tinggi menghasilkan efisiensi pelatihan yang lebih tinggi dan penggunaan memori yang lebih besar.
seq_length
int
128
Ya
Panjang urutan. Panjang data masukan yang diproses model pada satu waktu.
lora_dim
int
16
Tidak
Dimensi dalam matriks peringkat rendah yang digunakan dalam Low-Rank Adaptation (LoRA) atau QLoRA training. Atur parameter ini ke nilai lebih dari 0.
lora_alpha
int
32
Tidak
Bobot LoRA atau QLoRA. Parameter ini berlaku hanya jika Anda mengatur parameter lora_dim ke nilai lebih dari 0.
load_in_4bit
bool
true
Tidak
Menentukan apakah model dimuat dalam kuantisasi 4-bit.
load_in_8bit
bool
false
Tidak
Menentukan apakah model dimuat dalam kuantisasi 8-bit.
gradient_accumulation_steps
int
8
Tidak
Jumlah langkah akumulasi gradien.
apply_chat_template
bool
true
Tidak
Menentukan apakah algoritma menggabungkan data pelatihan dengan template obrolan default. Contoh:
Pertanyaan:
<|begin_of_text|><|start_header_id|>user<|end_header_id|>\n\n + instruction + <|eot_id|>Jawaban:
<|start_header_id|>assistant<|end_header_id|>\n\n + output + <|eot_id|>
Klik Train. Di halaman detail pekerjaan pelatihan, Anda dapat melihat status dan log pekerjaan pelatihan.
Klik daftar drop-down More dan pilih Tensorboard di sudut kanan atas untuk melihat status konvergensi model.
Model yang dilatih secara otomatis didaftarkan ke modul Manajemen Aset AI di Models. Anda dapat melihat atau menyebarkan model. Untuk informasi lebih lanjut, lihat Daftarkan dan kelola model.
Menggunakan model di PAI SDK untuk Python
Anda dapat memanggil model pra-latih di Model Gallery menggunakan PAI SDK untuk Python. Sebelum memanggil model, instal dan konfigurasikan PAI SDK untuk Python. Contoh kode:
# Instal PAI SDK untuk Python.
python -m pip install alipai --upgrade
# Secara interaktif konfigurasikan informasi yang diperlukan, seperti pasangan AccessKey Anda dan ruang kerja PAI.
python -m pai.toolkit.config
Untuk informasi tentang cara memperoleh informasi yang diperlukan, seperti pasangan AccessKey Anda dan ruang kerja PAI, lihat Instal dan konfigurasikan PAI SDK untuk Python.
Menyebarkan dan Memanggil Layanan Model
Konfigurasi layanan inferensi telah diatur sebelumnya pada model di Model Gallery. Anda hanya perlu menyediakan informasi sumber daya dan nama layanan untuk menyebarkan model Mixtral ke Elastic Algorithm Service (EAS) secara efisien.
from pai.session import get_default_session
from pai.model import RegisteredModel
from pai.common.utils import random_str
from pai.predictor import Predictor
session = get_default_session()
# Peroleh model dari Model Gallery.
m = RegisteredModel(
model_name="Mixtral-8x7B-Instruct-v0.1",
model_provider="pai",
)
# Lihat konfigurasi penyebaran default dari model.
print(m.inference_spec)
# Sebarkan model sebagai layanan inferensi.
# Berikan kuota sumber daya yang dibuat pada sumber daya Lingjun, yang memiliki setidaknya dua GPU GU108 dengan memori 80 GB.
predictor = m.deploy(
service_name="mixtral_8_7b_{}".format(random_str(6)),
options={
# ID kuota sumber daya.
"metadata.quota_id": "<LingJunResourceQuotaId>",
"metadata.quota_type": "Lingjun",
"metadata.workspace_id": session.workspace_id,
}
)
# Peroleh endpoint dan token layanan model.
endpoint = predictor.internet_endpoint
token = predictor.access_token
Untuk informasi tentang cara memanggil layanan model, lihat Menyebarkan dan Memanggil Layanan Model. Anda juga dapat memanggil layanan model menggunakan PAI SDK untuk Python.
from pai.predictor import Predictor
p = Predictor("<MixtralServiceName>")
res = p.raw_predict(
path="/v1/chat/completions",
method="POST",
data={
"model": "Mixtral-8x7B-Instruct-v0.1",
"messages": [
{"role": "user", "content": "Perkenalkan sejarah Shanghai"}
]
}
)
print(res.json())
Setelah memanggil layanan model, hapus layanan model untuk melepaskan sumber daya di konsol PAI atau menggunakan PAI SDK untuk Python.
# Hapus layanan model.
predictor.delete_service()Melatih Model
Setelah memperoleh model pra-latih dari Model Gallery menggunakan PAI SDK untuk Python, Anda dapat melihat algoritma fine-tuning model, termasuk konfigurasi hiperparameter yang didukung oleh algoritma dan data input serta output algoritma.
from pai.model import RegisteredModel
# Peroleh model Mixtral-8x7B-Instruct-v0.1 dari Model Gallery.
m = RegisteredModel(
model_name="Mixtral-8x7B-Instruct-v0.1",
model_provider="pai",
)
# Peroleh algoritma fine-tuning untuk model.
est = m.get_estimator()
# Lihat hiperparameter yang didukung oleh algoritma dan informasi input dan output algoritma.
print(est.hyperparameter_definitions)
print(est.input_channel_definitions)
Algoritma fine-tuning yang disediakan oleh model Mixtral-8x7B-Instruct-v0.1 hanya mendukung sumber daya Lingjun. Anda perlu memperoleh ID kuota sumber daya saat ini dan mengonfigurasi informasi sumber daya yang diperlukan oleh pekerjaan pelatihan di konsol PAI. Sebelum mengirimkan pekerjaan pelatihan, konfigurasikan hiperparameter yang sesuai untuk pekerjaan pelatihan.
# Konfigurasikan ID kuota sumber daya Lingjun yang digunakan oleh pekerjaan pelatihan.
est.resource_id = "<LingjunResourceQuotaId>"
# Konfigurasikan hiperparameter untuk pekerjaan pelatihan.
hps = {
"learning_rate": 1e-5,
"per_device_train_batch_size": 2,
}
est.set_hyperparameters(**hps)
Algoritma fine-tuning mendukung input berikut:
model: model pra-latih Mixtral-8x7B-Instruct-v0.1.train: dataset pelatihan yang digunakan untuk melatih model.validation: dataset validasi yang digunakan untuk melatih model.
Untuk informasi tentang format dataset, lihat Melatih Model. Anda dapat mengunggah objek ke Bucket OSS di konsol PAI atau menggunakan OSSUtils. Anda juga dapat menggunakan SDK untuk mengunggah objek ke Bucket OSS.
from pai.common.oss_utils import upload
# Lihat informasi input algoritma fine-tuning.
# Peroleh data input algoritma fine-tuning, termasuk model dan dataset publik-baca untuk pelatihan model.
training_inputs = m.get_estimator_inputs()
print(training_inputs)
# {
# "model": "oss://pai-quickstart-cn-wulanchabu.oss-cn-wulanchabu-internal.aliyuncs.com/huggingface/models/Mixtral-8x7B-Instruct-v0.1/main/",
# "train": "oss://pai-quickstart-cn-wulanchabu.oss-cn-wulanchabu-internal.aliyuncs.com/huggingface/datasets/llm_instruct/en_poetry_train_mixtral.json",
# "validation": "oss://pai-quickstart-cn-wulanchabu.oss-cn-wulanchabu-internal.aliyuncs.com/huggingface/datasets/llm_instruct/en_poetry_test_mixtral.json",
# }
# Unggah data pengguna. Gunakan jalur file lokal dan jalur Bucket OSS yang sebenarnya.
train_data_uri = upload("/path/to/local/train.json", "path/of/train/data")
validation_data_uri = upload("/path/to/local/validation.json", "path/of/validation/data")
# Gunakan data pelatihan pengembang.
# training_inputs["train"] = train_data_uri
# training_inputs["validation"] = validation_data_uri
Siapkan data sesuai format data pelatihan di atas. Ganti train dan validation dengan dataset pelatihan dan validasi Anda untuk mengirimkan pekerjaan pelatihan. Anda dapat melihat status dan log pekerjaan pelatihan di konsol PAI menggunakan URL pekerjaan pelatihan yang diberikan oleh PAI SDK untuk Python. Anda juga dapat melihat kemajuan dan konvergensi model pekerjaan pelatihan menggunakan TensorBoard.
from pai.common.oss_utils import download
# Kirim pekerjaan pelatihan dan cetak URL pekerjaan pelatihan.
est.fit(
inputs=training_inputs,
wait=False,
)
# Buka TensorBoard untuk melihat kemajuan pelatihan.
est.tensorboard()
# Tunggu hingga pekerjaan pelatihan selesai.
est.wait()
# Lihat jalur model yang disimpan di Bucket OSS.
print(est.model_data())
# Anda dapat mengunduh model ke mesin lokal Anda menggunakan OSSUtils atau metode praktis yang disediakan oleh PAI SDK untuk Python.
download(est.model_data())
Untuk informasi lebih lanjut tentang cara menggunakan model pra-latih di Model Gallery menggunakan PAI SDK untuk Python, lihat Gunakan model pra-latih dengan PAI SDK untuk Python.