CodeQwen olarak da bilinen Qwen2.5-Coder, Alibaba Cloud tarafından kodla ilgili görevlerde uzmanlaşmış büyük dil modelleri serisidir. Bu seri, çeşitli geliştirici ihtiyaçlarını karşılamak için altı farklı model boyutu (0,5B, 1,5B, 3B, 7B, 14B ve 32B) sunar. Devasa miktarda kod verisi üzerinde eğitilen Qwen2.5-Coder, güçlü matematiksel ve akıl yürütme yeteneklerini korurken kod odaklı uygulamalarda üstün performans gösterir. Bu eğitimde örnek olarak Qwen2.5-Coder-32B-Instruct modeli kullanılmıştır.
Model özeti
Qwen2.5-Coder, 128K tokena kadar bağlam uzunluğunu destekleyen ve 92 programlama diliyle uyumlu olan güçlü, kod odaklı bir model serisidir. Bu modeller, çok dilli kod oluşturma, kod tamamlama ve kod onarımı gibi çeşitli kodla ilgili görevlerde mükemmel sonuçlar verir. Talimat ayarlı varyantı olan Qwen2.5-Coder-Instruct, temel model üzerine inşa edilerek bu görevlerde daha iyi performans ve mükemmel genelleme yeteneği sağlar.
Temel özellikler şunlardır:
Çok dilli programlama yeteneği: Qwen2.5-Coder-Instruct, niş programlama dilleri de dahil olmak üzere 40'tan fazla dili kapsayan McEval kıyas ölçütünde son derece iyi performans gösterir.
Kod akıl yürütme yeteneği: Model, CRUXEval kıyas ölçütünde etkileyici sonuçlar elde ederek güçlü kod akıl yürütme becerilerini ortaya koyar. Gelişmiş akıl yürütme yeteneği, karmaşık talimat izleme görevlerinde de daha iyi performansa katkı sağlar.
Matematiksel yetenek: Kodlamanın temel disiplini olan matematik, modelin STEM alanındaki kapsamlı yeteneklerini gösterdiği bir başka alandır.
Genel yetenekler: Qwen2.5-Coder-Instruct, Qwen2.5 temel modelinin güçlü genel yeteneklerini devralarak geniş bir görev yelpazesinde istikrar ve geniş uygulama alanı sağlar.
Ortam gereksinimleri
Desteklenen bölgeler
Bu modeli Çin (Pekin), Çin (Şanghay), Çin (Shenzhen), Çin (Hangzhou), Çin (Ulanqab) ve Singapur bölgelerinde çalıştırmak için Model Galerisi'ni kullanabilirsiniz.
Kaynak gereksinimleri
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Modeli dağıtma ve çağırma
Modeli dağıtma
-
Model Galerisi sayfasına gidin.
PAI konsolu oturum açın.
Üst gezinme çubuğunun sol üst köşesinde bir bölge seçin.
Sol gezinme bölmesinde Workspaces öğesini tıklayın ve ardından açmak istediğiniz çalışma alanının adını tıklayın.
Sol gezinme bölmesinde Quick Start > Model Gallery seçeneğini belirleyin.
Model Galerisi sayfasında Qwen2.5-Coder-32B-Instruct model kartını bulun ve tıklayarak model ayrıntıları sayfasına gidin.
Sağ üst köşede Deploy düğmesini tıklayın. Varsayılan yapılandırmayı kabul edin ve hizmeti dağıtmak için Tamam'a tıklayın. Durum Running olarak değiştiğinde dağıtım başarılı olur.
Bu eğitimde kullandıkça öde esasına göre faturalandırılan genel kaynaklar kullanılmaktadır. Ücretlerden kaçınmak için işiniz bittiğinde hizmeti durdurun veya silin.
Modeli çağırma
Çağrı bilgilerini alma
Model ayrıntıları sayfasında genel uç nokta ve belirteci görüntülemek için View Call Information öğesini tıklayın.
Açılan Invocation Information panelinde Shared Gateway sekmesini seçin ve Public Endpoint ile Token değerlerini kopyalayın.
API ile çağırma
Aşağıdaki örnek, modelin API kullanılarak nasıl çağrılacağını gösterir:
from openai import OpenAI
# 1. Configure the client.
# Replace <EAS_TOKEN> with the Token from the Invocation Information panel.
openai_api_key = "<EAS_TOKEN>"
# Replace <EAS_ENDPOINT> with the Public Endpoint from the Invocation Information panel.
openai_api_base = "<EAS_ENDPOINT>/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
# 2. Get the model name.
# For BladeLLM, set model = "". BladeLLM does not require the model parameter and does not support using client.models.list() to get the model name. Set it to an empty string to comply with the mandatory parameter requirement of the OpenAI SDK.
models = client.models.list()
model = models.data[0].id
print(model)
# 3. Initiate a chat completion request.
# Both streaming (stream=True) and non-streaming (stream=False) outputs are supported.
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)
API çağrıları hakkında daha fazla bilgi için bkz. API Kullanarak Modeli Çağırma.
Web kullanıcı arayüzü ile çağırma
Modeli web kullanıcı arayüzü kullanarak da çağırabilirsiniz. Ayrıntılı talimatlar için model kartına bakın.
Model dağıtımı tamamlandıktan sonra, model kartı ayrıntıları sayfasının Web Application bölümünden istemci kodunu indirebilir ve çıkarım için yerel web uygulamasını başlatmak amacıyla python webui_client.py --eas_endpoint "<EAS API Endpoint>" --eas_token "<EAS API Token>" komutunu çalıştırabilirsiniz. EAS API Endpoint ve EAS API Token değerlerini dağıtılan EAS hizmetinin ayrıntılarından edinebilirsiniz. Daha fazla parametre açıklamasını görüntülemek için python webui_client.py -h komutunu çalıştırın.
Model ince ayarı
Model Galerisi, Qwen2.5-Coder-32B-Instruct modeli için kullanıma hazır iki ince ayar algoritması sunar: denetimli ince ayar (SFT) ve doğrudan tercih optimizasyonu (DPO).
Denetimli ince ayar (SFT)
SFT eğitim algoritması, her veri girdisinin sırasıyla "instruction" ve "output" alanlarıyla temsil edilen bir talimat ve çıktıdan oluştuğu JSON formatında girişi destekler. Örneğin:
[
{
"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'))"
}
]
Doğrudan tercih optimizasyonu (DPO)
DPO eğitim algoritması, her veri girdisinin sırasıyla "prompt", "chosen" ve "rejected" alanlarıyla temsil edilen bir istem, seçilen yanıt ve reddedilen yanıtından oluştuğu JSON formatında girişi destekler. Örneğin:
[
{
"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)"
}
]
Model Galerisi sayfasında Qwen2.5-Coder-32B-Instruct model kartını tıklayarak model ayrıntıları sayfasına gidin.
-
Model ayrıntıları sayfasında sağ üst köşede bulunan Train düğmesini tıklayın. Aşağıdaki parametreleri yapılandırın:
Veri kümesi yapılandırması: Verilerinizi hazırladıktan sonra bir Object Storage Service paketlerine yükleyin veya bir veri kümesi nesnesi belirterek NAS ya da CPFS üzerindeki bir veri kümesini seçin. Algoritmayı test etmek ve bir iş göndermek için PAI tarafından sağlanan genel bir veri kümesini de kullanabilirsiniz.
Hesaplama kaynağı yapılandırması: Algoritma, 80 GB veya daha fazla VRAM'e sahip bir GPU gerektirir. Seçili kaynak kotanız içinde yeterli hesaplama kaynağınız olduğundan emin olun. Diğer model boyutları için gereken kaynak teknik özellikleri hakkında bilgi edinmek için bkz. Ortam gereksinimleri.
-
Hiperparametre yapılandırması: Aşağıdaki tabloda eğitim hiperparametreleri listelenmiştir. Bu değerleri ayarlayabilir veya varsayılanları kullanabilirsiniz.
Train düğmesini tıklayın. Model Galerisi sizi otomatik olarak iş ayrıntıları sayfasına yönlendirir; burada eğitim durumunu izleyebilir ve günlükleri görüntüleyebilirsiniz.
Eğitilen model otomatik olarak AI Asset - Model Management içinde kaydedilir; buradan modeli görüntüleyebilir veya dağıtabilirsiniz. Daha fazla bilgi için bkz. Modelleri Kaydetme ve Yönetme.
Model değerlendirmesi
PAI, Qwen2.5-Coder-32B-Instruct modeli için yerleşik bir değerlendirme algoritması sağlar. Orijinal modelin ve ince ayarlanmış sürümlerinizin performansını değerlendirmek için bu algoritmayı kullanın. Daha fazla bilgi için bkz. Model Değerlendirmesi ve Büyük Dil Modeli Değerlendirmesi İçin En İyi Uygulamalar.
Model sıkıştırma
Eğitimden sonra, depolama ve hesaplama gereksinimlerini azaltmak için dağıtımdan önce modeli nicemleyebilir (sıkıştırabilirsiniz). Daha fazla bilgi için bkz. Model Sıkıştırma.