Qwen2.5-Coder, juga dikenal sebagai CodeQwen, adalah rangkaian model bahasa besar dari Alibaba Cloud yang mengkhususkan diri pada tugas-tugas terkait kode. Rangkaian ini mencakup enam ukuran model (0,5B; 1,5B; 3B; 7B; 14B; dan 32B) untuk memenuhi berbagai kebutuhan pengembang. Dilatih menggunakan volume data kode yang sangat besar, Qwen2.5-Coder unggul dalam aplikasi berbasis kode sekaligus mempertahankan kemampuan matematika dan penalaran yang kuat. Tutorial ini menggunakan model Qwen2.5-Coder-32B-Instruct sebagai contoh.
Ikhtisar model
Qwen2.5-Coder adalah rangkaian model kuat yang berfokus pada kode, mendukung panjang konteks hingga 128K token, serta kompatibel dengan 92 bahasa pemrograman. Model ini unggul dalam berbagai tugas terkait kode, termasuk generasi kode multibahasa, penyelesaian kode, dan perbaikan kode. Varian yang telah disesuaikan dengan instruksi, Qwen2.5-Coder-Instruct, dibangun di atas model dasar untuk meningkatkan performa dalam tugas-tugas tersebut dan memberikan generalisasi yang sangat baik.
Fitur utama meliputi:
Kemampuan pemrograman multibahasa: Qwen2.5-Coder-Instruct menunjukkan performa luar biasa pada benchmark McEval, yang mencakup lebih dari 40 bahasa, termasuk bahasa pemrograman niche.
Kemampuan penalaran kode: Model ini mencapai hasil mengesankan pada benchmark CRUXEval, menunjukkan kemampuan penalaran kode yang kuat. Penalaran yang ditingkatkan ini juga berkorelasi dengan peningkatan performa pada tugas-tugas kompleks yang mengikuti instruksi.
Kemampuan matematika: Sebagai disiplin dasar dalam pemrograman, matematika merupakan bidang lain di mana model ini unggul, menunjukkan kemampuan komprehensifnya di bidang STEM.
Kemampuan umum: Qwen2.5-Coder-Instruct mewarisi kemampuan umum yang kuat dari model dasar Qwen2.5 untuk stabilitas dan penerapan luas dalam berbagai tugas.
Persyaratan lingkungan
Wilayah yang didukung
Anda dapat menggunakan Model Gallery untuk menjalankan model ini di wilayah China (Beijing), China (Shanghai), China (Shenzhen), China (Hangzhou), China (Ulanqab), dan Singapura.
Persyaratan sumber daya
Ukuran model | Persyaratan penerapan | Persyaratan pelatihan |
Qwen2.5-Coder-0,5B/1,5B | Minimum: satu kartu P4. Direkomendasikan: satu kartu GU30, A10, V100, atau T4. | GPU dengan VRAM 16 GB atau lebih, seperti T4, P100, atau V100. |
Qwen2.5-Coder-3B/7B | Minimum: satu kartu P100, T4, atau V100 (gn6v). Direkomendasikan: satu kartu GU30 atau A10. | GPU dengan VRAM 24 GB atau lebih, seperti A10 atau T4. |
Qwen2.5-Coder-14B | Minimum: satu kartu L20 atau GU60, atau dua kartu GU30. Direkomendasikan: dua kartu GU60 atau L20. | GPU dengan VRAM 32 GB atau lebih, seperti V100. |
Qwen2.5-Coder-32B | Minimum: dua kartu GU60 atau L20, atau empat kartu A10. Direkomendasikan: empat kartu GU60 atau L20, atau delapan kartu V100-32G. | GPU dengan VRAM 80 GB atau lebih, seperti A800 atau H800. |
Sebarkan dan panggil model
Sebarkan model
Buka halaman Model Gallery.
Masuk ke Konsol PAI.
Di pojok kiri atas bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, klik Workspaces, lalu klik nama ruang kerja yang ingin Anda buka.
Di panel navigasi kiri, pilih Quick Start > Model Gallery.
Di halaman Model Gallery, temukan dan klik kartu model Qwen2.5-Coder-32B-Instruct untuk membuka halaman detail model.
Di pojok kanan atas, klik Deploy. Terima konfigurasi default dan klik OK untuk menyebarkan layanan. Penerapan berhasil jika status berubah menjadi Running.
Tutorial ini menggunakan sumber daya publik, yang ditagih berdasarkan skema bayar sesuai penggunaan. Untuk menghindari biaya, hentikan atau hapus layanan setelah selesai.
Panggil model
Dapatkan informasi pemanggilan
Di halaman detail model, klik View Call Information untuk melihat titik akhir publik dan token.
Di panel Invocation Information yang muncul, pilih tab Shared Gateway dan salin Public Endpoint serta Token.
Panggil melalui API
Contoh berikut menunjukkan cara memanggil model menggunakan API:
from openai import OpenAI
# 1. Konfigurasikan klien.
# Ganti <EAS_TOKEN> dengan Token dari panel Invocation Information.
openai_api_key = "<EAS_TOKEN>"
# Ganti <EAS_ENDPOINT> dengan Public Endpoint dari panel Invocation Information.
openai_api_base = "<EAS_ENDPOINT>/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
# 2. Dapatkan nama model.
# Untuk BladeLLM, atur model = "". BladeLLM tidak memerlukan parameter model dan tidak mendukung penggunaan client.models.list() untuk mendapatkan nama model. Atur ke string kosong agar sesuai dengan persyaratan parameter wajib SDK OpenAI.
models = client.models.list()
model = models.data[0].id
print(model)
# 3. Ajukan permintaan chat completion.
# Mendukung output streaming (stream=True) maupun non-streaming (stream=False).
stream = True
chat_completion = client.chat.completions.create(
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "hello"},
],
model=model,
top_p=0.8,
temperature=0.7,
max_tokens=1024,
stream=stream,
)
if stream:
for chunk in chat_completion:
print(chunk.choices[0].delta.content, end="")
else:
result = chat_completion.choices[0].message.content
print(result)Untuk informasi lebih lanjut tentang pemanggilan API, lihat Panggil Model Menggunakan API.
Panggil melalui antarmuka web
Anda juga dapat memanggil model menggunakan antarmuka web. Untuk petunjuk lengkap, lihat kartu model.
Setelah penerapan model selesai, Anda dapat mengunduh kode klien dari bagian Web Application di halaman detail kartu model dan menjalankan python webui_client.py --eas_endpoint "<EAS API Endpoint>" --eas_token "<EAS API Token>" untuk menjalankan aplikasi web lokal guna inferensi. EAS API Endpoint dan EAS API Token dapat diperoleh dari detail layanan EAS yang telah diterapkan. Jalankan python webui_client.py -h untuk melihat deskripsi parameter tambahan.
Fine-tuning model
Model Gallery menyediakan dua algoritma fine-tuning siap pakai untuk model Qwen2.5-Coder-32B-Instruct: supervised fine-tuning (SFT) dan direct preference optimization (DPO).
Supervised fine-tuning (SFT)
Algoritma pelatihan SFT mendukung input dalam format JSON, di mana setiap entri data terdiri dari instruksi dan output, yang masing-masing direpresentasikan oleh field "instruction" dan "output". Contohnya:
[
{
"instruction": "Create a function to calculate the sum of a sequence of integers.",
"output": "# Python code\ndef sum_sequence(sequence):\n sum = 0\n for num in sequence:\n sum += num\n return sum"
},
{
"instruction": "Generate a Python code for crawling a website for a specific type of data.",
"output": "import requests\nimport re\n\ndef crawl_website_for_phone_numbers(website):\n response = requests.get(website)\n phone_numbers = re.findall('\\d{3}-\\d{3}-\\d{4}', response.text)\n return phone_numbers\n \nif __name__ == '__main__':\n print(crawl_website_for_phone_numbers('www.example.com'))"
}
]Direct preference optimization (DPO)
Algoritma pelatihan DPO mendukung input dalam format JSON. Setiap entri data terdiri dari prompt, respons yang dipilih, dan respons yang ditolak, yang masing-masing direpresentasikan oleh field "prompt", "chosen", dan "rejected". Contohnya:
[
{
"prompt": "Create a function to calculate the sum of a sequence of integers.",
"chosen": "# Python code\ndef sum_sequence(sequence):\n sum = 0\n for num in sequence:\n sum += num\n return sum",
"rejected": "[x*x for x in [1, 2, 3, 5, 8, 13]]"
},
{
"prompt": "Generate a Python code for crawling a website for a specific type of data.",
"chosen": "import requests\nimport re\n\ndef crawl_website_for_phone_numbers(website):\n response = requests.get(website)\n phone_numbers = re.findall('\\d{3}-\\d{3}-\\d{4}', response.text)\n return phone_numbers\n \nif __name__ == '__main__':\n print(crawl_website_for_phone_numbers('www.example.com'))",
"rejected": "def remove_duplicates(string): \n result = \"\" \n prev = '' \n\n for char in string:\n if char != prev: \n result += char\n prev = char\n return result\n\nresult = remove_duplicates(\"AAABBCCCD\")\nprint(result)"
}
]Di halaman Model Gallery, klik kartu model Qwen2.5-Coder-32B-Instruct untuk membuka halaman detail model.
Di halaman detail model, klik Train di pojok kanan atas. Konfigurasikan parameter berikut:
Konfigurasi dataset: Setelah menyiapkan data Anda, unggah ke bucket Object Storage Service (OSS) atau pilih dataset di NAS atau CPFS dengan menentukan objek dataset. Anda juga dapat menggunakan dataset publik yang disediakan oleh PAI untuk mengirimkan pekerjaan dan menguji algoritma.
Konfigurasi sumber daya komputasi: Algoritma ini memerlukan GPU dengan VRAM minimal 80 GB. Pastikan kuota sumber daya yang Anda pilih mencakup sumber daya komputasi yang mencukupi. Untuk spesifikasi sumber daya yang diperlukan oleh model dengan ukuran berbeda, lihat Persyaratan lingkungan.
Konfigurasi hiperparameter: Tabel berikut mencantumkan hiperparameter latih. Anda dapat menyesuaikan nilainya atau menggunakan nilai default.
Klik Train. Model Gallery secara otomatis mengarahkan Anda ke halaman detail pekerjaan, tempat Anda dapat memantau status pelatihan dan melihat log.
Model yang telah dilatih secara otomatis terdaftar di AI Asset - Model Management, tempat Anda dapat melihat atau menyebarkannya. Untuk informasi lebih lanjut, lihat Daftarkan dan Kelola Model.
Evaluasi model
PAI menyediakan algoritma evaluasi bawaan untuk model Qwen2.5-Coder-32B-Instruct. Gunakan algoritma ini untuk menilai performa model asli dan versi fine-tuning Anda. Untuk informasi lebih lanjut, lihat Evaluasi Model dan Praktik Terbaik Evaluasi Model Bahasa Besar.
Kompresi model
Setelah pelatihan, Anda dapat melakukan kuantisasi (kompresi) model sebelum penerapan untuk mengurangi kebutuhan penyimpanan dan komputasi. Untuk informasi lebih lanjut, lihat Kompresi Model.