Pour les scénarios d'inférence ne nécessitant pas de réponse en temps réel, l'inférence par lot traite de manière asynchrone de grands volumes de requêtes à 50 % du coût de l'inférence en temps réel. Son API compatible OpenAI est idéale pour les traitements par lot tels que l'évaluation de modèles et l'étiquetage des données.
Fonctionnement
- Envoyez une tâche : téléchargez un fichier JSONL contenant plusieurs requêtes pour créer une tâche d'inférence par lot.
- Traitement asynchrone : le système traite les tâches dans une file d'attente en arrière-plan. Vous pouvez suivre la progression et l'état des tâches depuis la console ou via l'API.
- Téléchargez les résultats : une fois la tâche terminée, le système génère un fichier de résultats pour les réponses réussies ainsi qu'un fichier d'erreurs détaillant les éventuels échecs.
Périmètre
China (Beijing)
Modèles pris en charge :-
Modèles de génération de texte
- Qwen-Max : qwen3.8-max, qwen3.7-max, qwen3-max
- Qwen-Plus : qwen3.7-plus, qwen3.6-plus, qwen3.5-plus, qwen-plus, qwen-plus-latest
- Qwen-Flash : qwen3.7-flash, qwen3.7-flash-2026-07-15, qwen3.6-flash, qwen3.5-flash, qwen-flash
- Modèles recommandés : qwen-long, qwen-long-latest
- Modèles tiers : deepseek-r1, deepseek-v3.2, deepseek-v3
-
Modèles multimodaux
- Compréhension d'images et de vidéos : qwen3.8-max, qwen3.7-plus, qwen3.6-plus, qwen3.7-flash, qwen3.7-flash-2026-07-15, qwen3.6-flash, qwen3.5-plus, qwen3.5-flash, qwen3-vl-plus, qwen3-vl-flash
- Extraction de texte : qwen-vl-ocr, qwen-vl-ocr-latest
- Omni-modal : qwen3.5-omni-plus
-
Modèles d'embedding de texte : text-embedding-v1, text-embedding-v2, text-embedding-v3, text-embedding-v4
Important
- Dans le cadre du traitement par lot, le nombre maximal de tokens de contexte par requête est de 256 K pour
qwen3.8-max,qwen3.7-max,qwen3.7-plus,qwen3.6-plus,qwen3.7-flash,qwen3.7-flash-2026-07-15,qwen3.6-flash,qwen3.5-plus,qwen3.5-flashetqwen3.5-omni-plus.qwen3.5-omni-plusne prend pas en charge la sortie vocale. - Certains modèles prennent en charge le mode réflexion. L'activation de ce mode génère des
tokensde réflexion et augmente les coûts. - Les séries de modèles
qwen3.8,qwen3.7,qwen3.6etqwen3.5ont le mode réflexion activé par défaut. Si vous utilisez un modèle à réflexion hybride, vous devez définir explicitement le paramètreenable_thinking. Définissez ce paramètre surtruepour activer le mode ou surfalsepour le désactiver. - Dans le corps de la requête JSONL,
enable_thinkingest un paramètre de premier niveau debodyet doit être placé au même niveau quemodel. Ne le placez pas à l'intérieur deextra_body.
Singapore
Modèles pris en charge : qwen-max, qwen-plus, qwen-turbo.
Singapore
Modèles pris en charge : qwen-max, qwen-plus, qwen-flash, qwen-turbo.
China (Beijing)
Modèles pris en charge :
-
Modèles de génération de texte
- Qwen-Max : qwen3.8-max, qwen3.7-max, qwen3-max, qwen-max, qwen-max-latest
- Qwen-Plus : qwen3.7-plus, qwen3.6-plus, qwen3.5-plus, qwen-plus, qwen-plus-latest
- Qwen-Flash : qwen3.7-flash, qwen3.7-flash-2026-07-15, qwen3.6-flash, qwen3.5-flash, qwen-flash
- Modèles recommandés : qwen-long-latest
- Modèles recommandés : qwq-plus
- Modèles tiers : deepseek-r1, deepseek-v3.2, deepseek-v3
-
Modèles multimodaux
- Compréhension d'images et de vidéos : qwen3.8-max, qwen3.7-plus, qwen3.6-plus, qwen3.7-flash, qwen3.7-flash-2026-07-15, qwen3.6-flash, qwen3.5-plus, qwen3.5-flash, qwen3-vl-plus, qwen3-vl-flash, qwen-vl-max, qwen-vl-max-latest, qwen-vl-plus, qwen-vl-plus-latest
- Extraction de texte : qwen-vl-ocr
- Omni-modal : qwen3.5-omni-plus
-
Modèles d'embedding de texte : text-embedding-v4
Important
- Dans le cadre du traitement par lot, le nombre maximal de tokens de contexte par requête est de 256 K pour
qwen3.8-max,qwen3.7-max,qwen3.7-plus,qwen3.6-plus,qwen3.7-flash,qwen3.7-flash-2026-07-15,qwen3.6-flash,qwen3.5-plus,qwen3.5-flashetqwen3.5-omni-plus.qwen3.5-omni-plusne prend pas en charge la sortie vocale. - Certains modèles prennent en charge le mode réflexion. L'activation de ce mode génère des
tokensde réflexion et augmente les coûts. - Les séries de modèles
qwen3.8,qwen3.7,qwen3.6etqwen3.5ont le mode réflexion activé par défaut. Si vous utilisez un modèle à réflexion hybride, vous devez définir explicitement le paramètreenable_thinking. Définissez ce paramètre surtruepour activer le mode ou surfalsepour le désactiver. - Dans le corps de la requête JSONL,
enable_thinkingest un paramètre de premier niveau debodyet doit être placé au même niveau quemodel. Ne le placez pas à l'intérieur deextra_body.
Utiliser l'inférence par lot
Étape 1 : Préparer le fichier d'entrée
Avant de créer une tâche, préparez un fichier JSONL respectant les exigences suivantes :
-
Format : JSONL encodé en UTF-8 (un objet JSON par ligne).
-
Limites de volume : jusqu'à 50 000 requêtes par fichier, pour une taille maximale de 500 Mo.
Si votre jeu de données dépasse ces limites, divisez-le en plusieurs fichiers et soumettez-les sous forme de tâches distinctes.
-
Limite par ligne : chaque objet JSON peut atteindre 1 Mo et ne doit pas excéder la fenêtre de contexte du modèle.
-
Cohérence : toutes les requêtes d'un même fichier doivent utiliser le même modèle .
-
Identifiant unique : chaque requête doit inclure un champ
custom_idunique au sein du fichier afin de permettre la correspondance des résultats. Le champ custom_id accepte un maximum de 256 caractères. En cas de dépassement, la validation de la tâche échoue. Pour retourner un identifiant plus long, utilisez un champ personnalisé dans le paramètremetadatalors de la création de la tâche. Pour plus d'informations, consultez Utiliser les métadonnées pour retourner des identifiants personnalisés.
Chaque objet JSON doit respecter le schéma suivant :
Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| string | Oui | Identifiant unique de la requête au sein du fichier. |
| string | Oui | La méthode HTTP prise en charge est |
| string | Oui | Seul l'endpoint de requête |
| object | Oui | Le corps de la requête suit le même format que l'API |
Fichier d'exemple
Téléchargez le fichier d'exemple test_model.jsonl. Son contenu est le suivant :
{"custom_id":"1","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-max","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"Hello!"}]}}
{"custom_id":"2","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-max","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"What is 2+2?"}]}}
Outil de génération par lots JSONL
Cet outil permet de générer rapidement des fichiers JSONL.
Configurer le mode de réflexion pour l'inférence par lots
Certains modèles, tels que qwen3.7-plus, qwen3.7-max ainsi que les séries qwen3.6 et qwen3.5, activent par défaut le mode de réflexion, ce qui génère des tokens de réflexion supplémentaires. Pour configurer ce mode lors d'une inférence par lots, définissez le paramètre enable_thinking au même niveau que le paramètre model dans le body de chaque requête. Le paramètre facultatif thinking_budget permet de plafonner le nombre de tokens de réflexion.
ImportantLes paramètres enable_thinking et thinking_budget doivent être placés directement au niveau supérieur du body, au même niveau que model. Ne les insérez pas dans extra_body. Ce paramètre extra_body est un mécanisme spécifique au SDK OpenAI Python pour transmettre des paramètres non standard ; il n'est effectif que pour les appels d'inférence en temps réel et ne s'applique pas aux fichiers d'inférence par lots.
Exemple : Désactiver le mode de réflexion
{"custom_id":"request-1","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen3.5-plus","enable_thinking":false,"messages":[{"role":"user","content":"Hello"}]}}
Exemple : Activer le mode de réflexion et limiter le budget de tokens de réflexion
{"custom_id":"request-2","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen3.5-plus","enable_thinking":true,"thinking_budget":50,"messages":[{"role":"user","content":"Please analyze the following question"}]}}
Étape 2 : Créer une tâche d'inférence par lots
-
Sur la page Batches, cliquez sur Create Batch.
-
Dans la boîte de dialogue qui s'affiche, saisissez un Task Name et une Task Description, définissez le Maximum Waiting Time (de 1 à 14 jours), puis chargez votre fichier JSONL.
Cliquez sur Download Sample File pour obtenir le modèle.
-
Une fois terminé, cliquez sur Confirm.
Étape 3 : Surveiller et gérer les tâches
-
Consultation :
- Depuis la liste des tâches, suivez la progression (requêtes traitées / total) et le Status de chaque tâche.
- Recherchez une tâche par nom ou ID, ou filtrez par espace de travail pour localiser rapidement un élément spécifique.
-
Gestion :
-
Annulation : Dans la colonne Actions, annulez toute tâche se trouvant à l'état Executing.
-
Dépannage : Pour une tâche ayant échoué, survolez le statut afin d'afficher un résumé de l'erreur, ou téléchargez le fichier d'erreurs pour plus de détails.
Par exemple, si différents modèles sont mélangés dans le fichier batch, la tâche affiche un statut Failed accompagné d'un message tel que :
The model 'qwen-turbo' for this request does not match the rest of the batch. Each batch must contain requests for a single model.
-
Étape 4 : Télécharger les résultats
ImportantLes tâches sont automatiquement supprimées 30 jours après leur achèvement. Téléchargez vos résultats sans tarder.
Une fois la tâche terminée, cliquez sur View Results pour télécharger le fichier de sortie :
- Fichier de résultats : Contient toutes les requêtes réussies ainsi que leurs
responseassociées. - Fichier d'erreurs (le cas échéant) : Répertorie toutes les requêtes ayant échoué avec leurs détails
error.
Ces deux fichiers comportent un champ custom_id permettant d'établir la correspondance avec les données d'entrée originales, d'associer les résultats ou de localiser les erreurs.
Étape 5 : Consulter les statistiques d'utilisation (facultatif)
La page Monitoring permet de filtrer et de consulter les statistiques d'utilisation de l'inférence par lots.
-
Vue d'ensemble des données : Sélectionnez une période via View Details (jusqu'à 30 jours) et réglez Select Time sur Inference Type pour accéder aux informations suivantes :
- Données de surveillance : Statistiques synthétiques de tous les modèles sur la période sélectionnée, notamment le nombre total d'appels et d'échecs.
- Liste des modèles : Données détaillées pour chaque modèle, incluant le total des appels, le taux d'échec et la durée moyenne d'appel.
Pour consulter des données d'inférence datant de plus de 30 jours, accédez à la page Bills.
-
Détails par modèle : Dans la section Batches, cliquez sur Models dans la colonne Monitor du modèle souhaité pour afficher les Actions, telles que le nombre d'appels et le volume d'appels.

Important
- Les données d'appel pour l'inférence par lots sont enregistrées selon l'heure d'achèvement de la tâche. Tant qu'une tâche est en cours d'exécution, ses informations d'appel ne peuvent pas être interrogées.
- Un délai d'une à deux heures peut affecter les données de surveillance.
Utiliser les métadonnées pour renvoyer des identifiants personnalisés
Le champ custom_id accepte jusqu'à 256 caractères. Si vous devez renvoyer un identifiant plus long dans le fichier de résultats, utilisez un champ personnalisé dans metadata.
Champs de métadonnées
Le paramètre facultatif metadata permet de créer une tâche Batch. Il prend en charge les champs suivants :
ds_name: Nom de la tâche, affiché dans la colonne Call Statistics de la console.ds_description: Description de la tâche, visible dans la colonne Task Name de la console.- Champs personnalisés : Outre les champs officiels, l'objet
metadataaccepte tout champ personnalisé dont la valeur n'est pas limitée à 256 caractères. Lors de l'interrogation des détails d'une tâche, tous les champs personnalisés sont intégralement renvoyés.
Exemple de code
L'exemple ci-dessous illustre l'utilisation d'un champ personnalisé dans metadata pour transmettre un identifiant dépassant 256 caractères :
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
batch = client.batches.create(
input_file_id="file-batch-xxxxxxxxxxxxxxxxxxxx",
endpoint="/v1/chat/completions",
completion_window="24h",
metadata={
"ds_name": "my_batch_task",
"ds_description": "A description for my batch inference task",
"my_custom_field": "The value of this field can exceed 256 characters and is used to pass back longer identifier information..."
}
)
print(batch)
Après la création réussie d'une tâche, appelez l'opération GET /v1/batches/{batch_id} pour récupérer l'intégralité des informations metadata, y compris tous les champs personnalisés et leur contenu complet.
Référence API
En environnement de production, utilisez l'API compatible OpenAI pour automatiser la création et la gestion des tâches par lots. Le flux de travail principal est le suivant :
-
Appelez
POST /v1/filespour charger un fichier. Notez l'ID de fichier retourné. -
Pour créer une tâche, transmettez l'ID du fichier , appelez
POST /v1/batches, puis notez lebatch_idretourné. -
Interroger l'état en utilisant le
batch_idpour sonderGET /v1/batches/{batch_id}. Dès que lestatuspasse àcompleted, notez l'output_file_idet arrêtez l'interrogation. -
Pour télécharger le fichier de résultats, utilisez l'
output_file_idet appelezGET /v1/files/{output_file_id}/content.
Pour consulter les définitions complètes de l'API Batch et des exemples de code, reportez-vous à Compatible OpenAI - Batch (entrée fichier).
Cycle de vie d'une tâche
Statut | Description |
|---|---|
validating | Le système valide le format du fichier (spécification JSONL) ainsi que le format API de chaque requête. |
in_progress | Le fichier a été validé et le traitement des requêtes d'inférence a commencé. |
finalizing | Toutes les requêtes ont été traitées ; le système écrit les résultats dans les fichiers de sortie. Dans la console, cette phase affiche le même libellé de statut Task Description que l'état |
completed | Les fichiers de résultats et d'erreurs ont été générés et sont prêts à être téléchargés. |
failed | L'échec de la tâche est survenu durant la phase |
expired | La durée d'exécution de la tâche a dépassé le temps d'attente maximal défini lors de la création, entraînant son interruption par le système. Lors de la création d'une nouvelle tâche, envisagez de définir un délai d'attente plus long. |
cancelled | L'utilisateur a annulé la tâche. Toutes les requêtes non traitées sont interrompues. Dans la console, ce statut apparaît sous le libellé Executing. |
Facturation
-
Tarification : Pour toute requête réussie, les tokens d'entrée et de sortie sont facturés à 50 % du prix de l'inférence en temps réel pour le modèle correspondant. Pour plus de détails, consultez Modèles et tarification.
-
Périmètre de facturation :
- Seules les requêtes exécutées avec succès au sein d'une tâche sont facturées.
- Les échecs d'analyse de fichier, les erreurs d'exécution de tâche ou les erreurs de requête au niveau de la ligne n'entraînent aucun frais.
- Concernant les tâches annulées, les requêtes achevées avec succès avant l'annulation sont facturées normalement.
Remarque
- L'inférence par lots constitue un poste de facturation distinct et est éligible au Plan d'économies universel IA. Elle ne peut toutefois pas bénéficier d'autres promotions telles que les plans prépayés (Savings Plans) et les quotas gratuits pour nouveaux utilisateurs, ni de fonctionnalités comme la mise en cache du contexte.
- Certains modèles, tels que qwen3.7-plus, qwen3.7-max ainsi que les séries qwen3.6 et qwen3.5, activent par défaut le mode de réflexion. Cela génère des tokens de réflexion supplémentaires, facturés au tarif des tokens de sortie, ce qui augmente les coûts. Pour maîtriser vos dépenses, ajustez le paramètre
enable_thinkingselon la complexité de la tâche. Pour plus de détails, consultez Réflexion approfondie.
FAQ
-
Dois-je acheter ou activer des services supplémentaires pour utiliser l'inférence par lots ?
Non. Cette fonctionnalité est disponible dès l'activation de Model Studio. Les frais sont engagés sur la base du paiement à l'utilisation et déduits du solde de votre compte.
-
Pourquoi ma tâche a-t-elle échoué immédiatement après son envoi (statut passé àfailed) ?
Cela indique généralement une erreur au niveau du fichier ; aucune requête d'inférence n'a été exécutée. Vérifiez les points suivants dans l'ordre :
- Format du fichier : Assurez-vous que le fichier respecte strictement le format JSONL, avec un objet JSON complet par ligne.
- Taille du fichier : Vérifiez que la taille du fichier et le nombre de lignes ne dépassent pas les limites autorisées. Pour plus de détails, consultez Étape 1 : Préparer le fichier d'entrée.
- Cohérence du modèle : Vérifiez que le champ
body.modelest identique pour toutes les requêtes du fichier et que le modèle utilisé est pris en charge dans la région actuelle.
-
Combien de temps prend le traitement d'une tâche ?
Le temps de traitement dépend de la charge du système au moment de la soumission. En période de forte activité, les tâches peuvent être mises en file d'attente. Toutefois, un résultat (succès ou échec) est toujours renvoyé dans le délai d'attente maximal spécifié.
Codes d'erreur
Si un appel échoue et renvoie un message d'erreur, consultez la rubrique Codes d'erreur.