Qwen2,5-Coder, également connu sous le nom de CodeQwen, est une série de grands modèles de langage développée par Alibaba Cloud et spécialisée dans les tâches liées au code. Cette série comprend six tailles de modèle (0,5 B, 1,5 B, 3 B, 7 B, 14 B et 32 B) afin de répondre aux divers besoins des développeurs. Entraîné sur un volume massif de données de code, Qwen2,5-Coder excelle dans les applications centrées sur le code tout en conservant de solides capacités mathématiques et de raisonnement. Ce tutoriel utilise le modèle Qwen2,5-Coder-32B-Instruct comme exemple.
Présentation du modèle
Qwen2,5-Coder est une série de modèles puissants, axés sur le code, qui prennent en charge une longueur de contexte allant jusqu'à 128 K jetons et sont compatibles avec 92 langages de programmation. Ces modèles excellent dans diverses tâches liées au code, notamment la génération de code multilingue, la complétion de code et la réparation de code. La variante affinée pour les instructions, Qwen2,5-Coder-Instruct, s'appuie sur le modèle de base pour offrir des performances améliorées sur ces tâches ainsi qu'une excellente généralisation.
Les principales caractéristiques sont les suivantes :
Capacité de programmation multilingue : Qwen2,5-Coder-Instruct obtient d'excellents résultats sur le benchmark McEval, qui couvre plus de 40 langages, y compris des langages de programmation de niche.
Capacité de raisonnement sur le code : Le modèle atteint des résultats impressionnants sur le benchmark CRUXEval, mettant en évidence ses fortes capacités de raisonnement sur le code. Ce raisonnement amélioré est également corrélé à de meilleures performances sur des tâches complexes de suivi d'instructions.
Capacité mathématique : Discipline fondamentale pour la programmation, les mathématiques constituent un autre domaine où le modèle excelle, démontrant ainsi ses capacités complètes dans les domaines STEM.
Capacités générales : Qwen2,5-Coder-Instruct hérite des puissantes capacités générales du modèle de base Qwen2,5, garantissant stabilité et large applicabilité sur une vaste gamme de tâches.
Configuration requise
Régions prises en charge
Vous pouvez utiliser Model Gallery pour exécuter ce modèle dans les régions Chine (Pékin), Chine (Shanghai), Chine (Shenzhen), Chine (Hangzhou), Chine (Ulanqab) et Singapour.
Ressources requises
|
Taille du modèle |
Configuration requise pour le déploiement |
Configuration requise pour l'entraînement |
|
Qwen2,5-Coder-0,5B/1,5B |
Minimum : une seule carte P4. Recommandé : une seule carte GU30, A10, V100 ou T4. |
Un GPU avec 16 Go de VRAM ou plus, tel qu'un T4, P100 ou V100. |
|
Qwen2,5-Coder-3B/7B |
Minimum : une seule carte P100, T4 ou V100 (gn6v). Recommandé : une seule carte GU30 ou A10. |
Un GPU avec 24 Go de VRAM ou plus, tel qu'un A10 ou T4. |
|
Qwen2,5-Coder-14B |
Minimum : une seule carte L20 ou GU60, ou deux cartes GU30. Recommandé : deux cartes GU60 ou L20. |
Un GPU avec 32 Go de VRAM ou plus, tel qu'un V100. |
|
Qwen2,5-Coder-32B |
Minimum : deux cartes GU60 ou L20, ou quatre cartes A10. Recommandé : quatre cartes GU60 ou L20, ou huit cartes V100-32G. |
Un GPU avec 80 Go de VRAM ou plus, tel qu'un A800 ou H800. |
Déploiement et appel du modèle
Déployer le modèle
-
Accédez à la page Model Gallery.
Connectez-vous à la console PAI.
Dans le coin supérieur gauche de la barre de navigation supérieure, sélectionnez une région.
Dans le volet de navigation de gauche, cliquez sur Workspaces puis sur le nom de l'espace de travail que vous souhaitez ouvrir.
Dans le volet de navigation de gauche, choisissez Quick Start > Model Gallery.
Sur la page Model Gallery, recherchez et cliquez sur la carte du modèle Qwen2,5-Coder-32B-Instruct pour accéder à la page des détails du modèle.
Dans le coin supérieur droit, cliquez sur Deploy. Acceptez la configuration par défaut et cliquez sur OK pour déployer le service. Le déploiement est réussi lorsque le statut passe à Running.
Ce tutoriel utilise des ressources publiques, facturées selon le mode de paiement à l'utilisation. Pour éviter toute facturation, arrêtez ou supprimez le service une fois que vous avez terminé.
Appeler le modèle
Obtenir les informations d'appel
Sur la page des détails du modèle, cliquez sur View Call Information pour afficher l'endpoint public et le token.
Dans le panneau Invocation Information qui s'affiche, sélectionnez l'onglet Shared Gateway et copiez l'Public Endpoint et le Token.
Appel via API
L'exemple suivant montre comment appeler le modèle en utilisant l'API :
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)
Pour plus d'informations sur les appels API, consultez Appeler le modèle via une API.
Appel via interface web
Vous pouvez également appeler le modèle en utilisant une interface web. Pour des instructions détaillées, consultez la carte du modèle.
Une fois le déploiement du modèle terminé, vous pouvez télécharger le code client depuis la section Web Application de la page des détails de la carte du modèle et exécuter python webui_client.py --eas_endpoint "<EAS API Endpoint>" --eas_token "<EAS API Token>" pour démarrer l'application web locale destinée à l'inférence. L'EAS API Endpoint et l'EAS API Token peuvent être obtenus à partir des détails du service EAS déployé. Exécutez python webui_client.py -h pour afficher davantage de descriptions de paramètres.
Affinage du modèle
Model Gallery propose deux algorithmes d'affinage prêts à l'emploi pour le modèle Qwen2,5-Coder-32B-Instruct : l'affinage supervisé (SFT) et l'optimisation directe des préférences (DPO).
Affinage supervisé (SFT)
L'algorithme d'entraînement SFT prend en charge les entrées au format JSON, où chaque entrée de données se compose d'une instruction et d'une sortie, représentées respectivement par les champs "instruction" et "output". Par exemple :
[
{
"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'))"
}
]
Optimisation directe des préférences (DPO)
L'algorithme d'entraînement DPO prend en charge les entrées au format JSON. Chaque entrée de données se compose d'une invite, d'une réponse choisie et d'une réponse rejetée, représentées respectivement par les champs "prompt", "chosen" et "rejected". Par exemple :
[
{
"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)"
}
]
Sur la page Model Gallery, cliquez sur la carte du modèle Qwen2,5-Coder-32B-Instruct pour accéder à la page des détails du modèle.
-
Sur la page des détails du modèle, cliquez sur Train dans le coin supérieur droit. Configurez les paramètres suivants :
Configuration du jeu de données : Après avoir préparé vos données, téléchargez-les dans un compartiment Object Storage Service (OSS) ou sélectionnez un jeu de données sur NAS ou CPFS en spécifiant un objet de jeu de données. Vous pouvez également utiliser un jeu de données public fourni par PAI pour soumettre une tâche et tester l'algorithme.
Configuration des ressources de calcul : L'algorithme nécessite un GPU disposant d'au moins 80 Go de VRAM. Assurez-vous de disposer de ressources de calcul suffisantes dans votre quota de ressources sélectionné. Pour les spécifications de ressources requises par les autres tailles de modèle, consultez Configuration requise.
-
Configuration des hyperparamètres : Le tableau ci-dessous répertorie les hyperparamètres d'entraînement. Vous pouvez ajuster ces valeurs ou utiliser les valeurs par défaut.
Cliquez sur Train. Model Gallery vous redirige automatiquement vers la page des détails de la tâche, où vous pouvez surveiller l'état de l'entraînement et consulter les journaux.
Le modèle entraîné est automatiquement enregistré dans AI Asset - Model Management, où vous pouvez consulter ou déployer le modèle. Pour plus d'informations, consultez Enregistrer et gérer les modèles.
Évaluation du modèle
PAI fournit un algorithme d'évaluation intégré pour le modèle Qwen2,5-Coder-32B-Instruct. Utilisez cet algorithme pour évaluer les performances du modèle d'origine et de vos versions affinées. Pour plus d'informations, consultez Évaluation des modèles et Meilleures pratiques pour l'évaluation des grands modèles de langage.
Compression du modèle
Après l'entraînement, vous pouvez quantifier (compresser) le modèle avant son déploiement afin de réduire ses exigences en matière de stockage et de calcul. Pour plus d'informations, consultez Compression des modèles.