Mixtral-8x7B adalah model Sparse Mixture-of-Experts (SMoE) open-source dari Mistral AI yang mengungguli GPT-3.5 pada berbagai benchmark. Model Gallery PAI menyediakan penerapan siap pakai dan fine-tuning LoRA untuk model ini.
Ikhtisar model
Mixtral-8x7B adalah LLM decoder-only berbasis arsitektur Sparse Mixture-of-Experts (SMoE), dirilis di bawah lisensi Apache 2.0. Jaringan router memilih dua dari delapan kelompok expert per token dan menggabungkan output mereka. Meskipun model ini memiliki total 47 miliar parameter, hanya 13 miliar yang aktif per token, sehingga kecepatan inferensinya setara dengan model 13B.
Mixtral-8x7B mendukung bahasa Inggris, Prancis, Jerman, Spanyol, dan Italia dengan panjang konteks 32k token. Model ini menyamai atau melampaui LLaMA2-70B dan GPT-3.5 pada semua benchmark yang dievaluasi, serta secara signifikan mengungguli LLaMA2-70B dalam tugas matematika, pembuatan kode, dan multibahasa.

Sumber: https://arxiv.org/abs/2401.04088
Mistral AI juga merilis Mixtral-8x7B-Instruct-v0.1, varian yang telah dioptimalkan melalui supervised fine-tuning dan Direct Preference Optimization (DPO). Model ini lebih akurat dalam mengikuti instruksi manusia dan melampaui model open-source lain yang telah dioptimalkan instruksi dalam tugas percakapan.

Sumber: https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard
Prasyarat
Sumber daya Layanan Komputasi AI Lingjun telah diaktifkan. Buat kelompok sumber daya dan beli sumber daya Layanan Komputasi AI Lingjun.
Persyaratan lingkungan
-
Contoh ini memerlukan kluster PAI Lingjun di wilayah China (Ulanqab).
-
GPU GU108 (VRAM 80 GB) direkomendasikan. Inferensi memerlukan minimal dua GPU; fine-tuning LoRA memerlukan minimal empat.
Gunakan model di Konsol PAI
Penerapan dan pemanggilan model
-
Buka halaman Model Gallery.
-
Login ke Konsol PAI.
-
Pada bilah navigasi atas, pilih wilayah China (Ulanqab).
-
Pada panel navigasi kiri, klik workspaces. Di halaman Workspaces, klik nama ruang kerja yang ingin Anda gunakan.
-
Pada panel navigasi kiri, pilih QuickStart > Model Gallery untuk membuka halaman Model Gallery.
-
-
Pada daftar model di sebelah kanan, klik kartu model Mixtral-8x7B-Instruct-v0.1 untuk membuka halaman Model Details.
-
Di pojok kanan atas, klik Deploy. Konfigurasikan sumber daya komputasi Lingjun dan klik Deploy untuk menerapkan model ke PAI-EAS.
Model ini memerlukan sumber daya Layanan Komputasi AI Lingjun. Kuota sumber daya harus mencakup minimal dua GPU GU108.
Pada panel konfigurasi penerapan, atur Resource group type menjadi Lingjun Intelligent Computing Service, atur Number of instances menjadi 1, CPU menjadi 40, dan Memory (MB) menjadi 256000. Lalu, klik Deploy.
-
Panggil layanan inferensi.
HTTP API
Layanan inferensi mendukung API yang kompatibel dengan OpenAI. Dapatkan titik akhir layanan dan token akses dari halaman detail layanan, lalu panggil layanan menggunakan cURL:
dan dengan endpoint dan token aktual layanan Anda. export API_ENDPOINT="<ENDPOINT>" export API_TOKEN="<TOKEN>" # Menampilkan daftar model yang tersedia curl $API_ENDPOINT/v1/models \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $API_TOKEN" # Memanggil API pelengkapan 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 }' # Memanggil API pelengkapan chat 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": "Tell me about the history of Shanghai."} ] }' # Ganti <endpoint> dan <token> dengan titik akhir dan token aktual layanan Anda. export API_ENDPOINT="<ENDPOINT>" export API_TOKEN="<TOKEN>" # Daftar model yang tersedia curl $API_ENDPOINT/v1/models \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $API_TOKEN" # Panggil API penyelesaian 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 }' # Panggil API penyelesaian chat 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": "Tell me about the history of Shanghai."} ] }' </token></endpoint>SDK
Untuk memanggil layanan menggunakan OpenAI SDK, instal terlebih dahulu SDK tersebut:
# Instal SDK untuk memanggil layanan python -m pip install openaiPanggil layanan inferensi menggunakan SDK:
dan dengan token dan endpoint dari halaman detail layanan. openai.api_key = "<TOKEN>" openai.base_url = "<ENDPOINT>" + "/v1" # Panggil API chat completion 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": "Tell me about yourself."}], # stream=True, ) # Cetak konten output print(completion.choices[0].message.content) import openai # Ganti <token> dan <endpoint> dengan token dan titik akhir dari halaman detail layanan. openai.api_key = "<TOKEN>" openai.base_url = "<ENDPOINT>" + "/v1" # Panggil API penyelesaian 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": "Tell me about yourself."}], # stream=True, ) # Cetak konten output print(completion.choices[0].message.content) </endpoint></token>
Fine-tune model
Model Gallery menyediakan algoritma fine-tuning siap pakai untuk Mixtral-8x7B-Instruct-v0.1.
Data pelatihan harus dalam format JSON. Setiap entri memerlukan bidang instruction (pertanyaan) dan bidang output (jawaban):
[
{
"instruction": "Write a poem on a topic 'On a Political Prisoner': \n",
"output": "She that but little patience knew,\r\nFrom childhood on, had now so much\r\nA grey gull lost its fear and flew\r\nDown to her cell and there alit,\r\nAnd there endured her fingers' touch\r\nAnd from her fingers ate its bit.\r\nDid she in touching that lone wing."
},
{
"instruction": "Write a poem on a topic 'To His Love': ",
"output": "He's gone, and all our plans\r\n Are useless indeed.\r\nWe'll walk no more on Cotswold\r\n Where the sheep feed\r\n Quietly and take no heed.\r\n His body that was so quick\r\n Is not as you\r\nKnew it, on Severn river\r\n Under the blue\r\n Driving our small boat through."
}
]
-
Di halaman Model Details, klik Fine-tune di pojok kanan atas. Konfigurasi utama adalah sebagai berikut:
-
Konfigurasi dataset: Unggah data ke Bucket OSS, atau tentukan dataset NAS atau CPFS. PAI juga menyediakan dataset publik untuk pengujian.
-
Konfigurasi sumber daya komputasi: Diperlukan empat GPU GU108 (VRAM 80 GB). Pastikan kuota mencukupi.
-
Konfigurasi hiperparameter: Sesuaikan hiperparameter berikut berdasarkan data dan sumber daya komputasi Anda, atau gunakan nilai default.
Parameter
Tipe
Default
Wajib
Deskripsi
learning_rate
float
5e-5
Ya
Mengontrol ukuran langkah pembaruan bobot selama pelatihan.
num_train_epochs
int
1
Ya
Jumlah kali set data pelatihan diiterasi.
per_device_train_batch_size
int
1
Ya
Jumlah sampel yang diproses per GPU per iterasi. Nilai yang lebih besar meningkatkan throughput tetapi menambah penggunaan VRAM.
seq_length
int
128
Ya
Panjang urutan input per langkah pelatihan.
lora_dim
int
16
Tidak
Dimensi LoRA. Jika lora_dim > 0, ini mengaktifkan fine-tuning ringan dengan LoRA atau QLoRA.
lora_alpha
int
32
Tidak
Faktor penskalaan alpha LoRA. Digunakan saat lora_dim > 0.
load_in_4bit
bool
true
Tidak
Menentukan apakah model dimuat dalam 4-bit.
Jika lora_dim > 0, load_in_4bit bernilai true, dan load_in_8bit bernilai false, fine-tuning ringan menggunakan QLoRA 4-bit.
load_in_8bit
bool
false
Tidak
Menentukan apakah model dimuat dalam 8-bit.
Jika lora_dim > 0, load_in_4bit bernilai false, dan load_in_8bit bernilai true, fine-tuning ringan menggunakan QLoRA 8-bit.
gradient_accumulation_steps
int
8
Tidak
Jumlah langkah akumulasi gradien.
apply_chat_template
bool
true
Tidak
Menentukan apakah algoritma menerapkan templat chat default model ke data pelatihan. 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|>
-
-
-
Mengklik Fine-tune akan membuka halaman pekerjaan pelatihan. Pekerjaan dimulai secara otomatis.
Di pojok kanan atas, klik Tensorboard untuk membuka TensorBoard dan memantau konvergensi model.

Model yang telah dilatih secara otomatis didaftarkan di AI Assets - Model Management. Daftarkan dan kelola model.
Gunakan model dengan SDK PAI
Anda juga dapat menggunakan model Model Gallery dengan PAI SDK untuk Python. Instal dan konfigurasikan SDK:
# Instal PAI SDK untuk Python
python -m pip install alipai --upgrade
# Konfigurasikan kredensial akses, ruang kerja PAI, dan informasi lainnya secara interaktif
python -m pai.toolkit.config
Konfigurasikan kredensial akses (Pasangan Kunci Akses) dan ruang kerja seperti yang dijelaskan dalam Instalasi dan konfigurasi.
Penerapan dan pemanggilan model
Terapkan model Mixtral ke PAI-EAS menggunakan pengaturan inferensi pra-konfigurasi dari Model Gallery. Berikan nama layanan dan detail sumber daya:
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()
# Dapatkan model yang disediakan oleh PAI QuickStart
m = RegisteredModel(
model_name="Mixtral-8x7B-Instruct-v0.1",
model_provider="pai",
)
# Tampilkan konfigurasi penerapan default model
print(m.inference_spec)
# Terapkan layanan inferensi
# Anda harus menyediakan ID kuota sumber daya Lingjun (QuotaId) yang memiliki minimal dua kartu GPU GU108 (VRAM 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,
}
)
# Dapatkan titik akhir dan token layanan inferensi
endpoint = predictor.internet_endpoint
token = predictor.access_token
Panggil layanan inferensi melalui metode Panggil layanan inferensi di atas, atau gunakan SDK PAI secara langsung:
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": "Tell me about the history of Shanghai."}
]
}
)
print(res.json())
Setelah pengujian, hapus layanan dari konsol atau gunakan SDK untuk melepaskan sumber dayanya.
# Hapus layanan
predictor.delete_service()
Fine-tune model
Ambil model dari Model Gallery untuk melihat algoritma fine-tuning-nya, hiperparameter yang didukung, serta konfigurasi input/output:
from pai.model import RegisteredModel
# Dapatkan model Mixtral-8x7B-Instruct-v0.1 yang disediakan oleh PAI QuickStart
m = RegisteredModel(
model_name="Mixtral-8x7B-Instruct-v0.1",
model_provider="pai",
)
# Dapatkan algoritma fine-tuning yang dikonfigurasi untuk model
est = m.get_estimator()
# Tampilkan hiperparameter yang didukung dan informasi input/output algoritma
print(est.hyperparameter_definitions)
print(est.input_channel_definitions)
Algoritma fine-tuning Mixtral-8x7B-Instruct-v0.1 saat ini hanya mendukung sumber daya Layanan Komputasi AI Lingjun. Dapatkan ID kuota sumber daya Anda dari Konsol PAI dan konfigurasikan hiperparameter sebelum mengirimkan pekerjaan:
# Konfigurasikan ID kuota sumber daya Lingjun untuk 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 tiga input:
-
model: Model pra-latih Mixtral-8x7B-Instruct-v0.1. -
train: Set data pelatihan untuk fine-tuning. -
validation: Set data validasi untuk fine-tuning.
Format dataset yang diperlukan dijelaskan di bagian Fine-tune model. Unggah data ke Bucket OSS menggunakan ossutil, konsol, atau SDK:
from pai.common.oss_utils import upload
# Tampilkan input yang digunakan oleh algoritma fine-tuning model
# Dapatkan data input untuk algoritma, termasuk model dan dataset publik untuk pengujian.
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. Ganti path file lokal dan path bucket OSS tujuan berikut.
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")
# Ganti data pelatihan dengan data Anda sendiri.
# training_inputs["train"] = train_data_uri
# training_inputs["validation"] = validation_data_uri
Ganti input train dan validation dengan dataset Anda sendiri, lalu kirimkan pekerjaan fine-tuning. Gunakan tautan pekerjaan yang dicetak untuk melihat status dan log di Konsol PAI, atau buka TensorBoard untuk memantau konvergensi:
from pai.common.oss_utils import download
# Kirim pekerjaan pelatihan dan cetak tautan ke pekerjaan
est.fit(
inputs=training_inputs,
wait=False,
)
# Buka TensorBoard untuk melihat progres pelatihan
est.tensorboard()
# Tunggu hingga pekerjaan pelatihan selesai
est.wait()
# Tampilkan path model di Bucket OSS
print(est.model_data())
# Anda dapat mengunduh model ke mesin lokal menggunakan ossutil atau metode utilitas yang disediakan oleh SDK.
download(est.model_data())
Panduan integrasi SDK lengkap: Gunakan model pra-latih — PAI SDK untuk Python.