Ce modèle vous permet de déployer à la fois des conteneurs Docker accélérés par GPU, comme ComfyUI, et des conteneurs sans prise en charge du GPU, tels que n8n. Cette flexibilité permet une large gamme d'applications, allant de la génération d'images par IA aux flux de travail automatisés, le tout dans un environnement unique et gérable. Configurez et exécutez vos conteneurs Docker souhaités sans effort, en tirant parti de la puissance et de la commodité de ce modèle polyvalent.
Bien que vous puissiez préférer gérer directement les configurations Docker, nous vous recommandons d'utiliser notre modèle "Any Docker". pour la configuration initialeLa configuration de Docker avec le support GPU peut être complexe, et ce modèle offre une base simplifiée pour construire et déployer vos conteneurs.
Pour garantir le bon fonctionnement lors de l’exécution de plusieurs conteneurs Docker sur votre serveur GPU, il est essentiel d’attribuer à chaque conteneur un nom et un répertoire de données uniques. Par exemple, au lieu d’utiliser « my_docker_container », spécifiez un nom tel que « my_comfyui_container » et définissez le répertoire de données sur un chemin unique tel que /home/trooperai/docker_comfyui_dataCette simple étape permettra à plusieurs conteneurs Docker de s'exécuter sans conflit.
Cet exemple explique étape par étape comment exécuter API compatible vLLM OpenAI en utilisant Trooper.AI any-docker template.
Il est rédigé pour être compréhensible même avec des connaissances minimales en Docker ou en IA.
Cette configuration utilise Qwen/Qwen3-4B, qui est supporté et exécutable sur tous les serveurs GPU Trooper.AI.
Sur les pilotes NVIDIA plus récents, les anciennes images Docker vLLM peuvent se planter avec des erreurs CUDA au démarrage.
Pour éviter cela, le modèle any-docker :
Vous n'avez pas besoin de modifier cette logique – utilisez simplement la configuration ci-dessous.
Voir ici la capture d'écran pour savoir comment configurer et le texte complet ci-dessous pour copier et coller.
| Variable | Valeur | Ce que cela signifie |
|---|---|---|
app_args |
--model Qwen/Qwen3-4B |
Définit quel modèle vLLM doit charger. |
container_name |
my_vllm_api |
Nom du conteneur Docker. |
docker_reprotag |
vllm/vllm-openai:nightly |
Image vLLM avec des corrections pour les pilotes NVIDIA modernes. |
docker_port |
8000 |
Port interne utilisé par vLLM. |
gpus |
all |
Rend tous les GPU disponibles pour Docker. |
host_network |
YES |
Expose l'API directement sur le réseau hôte. |
keep_alive |
NO |
Cycle de vie normal du conteneur (recommandé). |
local_data_dir |
/home/trooperai/.cache/huggingface |
Répertoire du cache du modèle sur l'hôte. |
docker_data_dir |
/root/.cache/huggingface |
Répertoire de cache du modèle à l'intérieur du conteneur. |
start_args |
-e LD_LIBRARY_PATH=/usr/local/nvidia/lib64:/usr/local/nvidia/lib:/usr/lib/x86_64-linux-gnu --ipc=host --env HF_TOKEN=… |
Correction requise pour CUDA + mémoire partagée. |
LD_LIBRARY_PATHCe paramètre est obligatoire sur les systèmes CUDA 13.
Sans cela, vLLM peut échouer au démarrage en raison d'incompatibilités avec les pilotes NVIDIA.
Ne pas le supprimer.
Exécutez la commande suivante :
curl https://XXXXXXXX.apps01.trooper.ai/v1/models
Si vous voyez Qwen/Qwen3-4B dans la réponse, le serveur fonctionne correctement.
curl https://XXXXXXXX.apps01.trooper.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer dummy-key" \
-d '{
"model": "Qwen/Qwen3-4B",
"messages": [
{ "role": "user", "content": "What is Trooper.AI?" }
]
}'
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "dummy-key",
baseURL: "https://XXXXXXXX.apps01.trooper.ai/v1",
});
const result = await client.chat.completions.create({
model: "Qwen/Qwen3-4B",
messages: [{ role: "user", content: "What is Trooper.AI?" }],
});
console.log(result.choices[0].message.content);
Cet exemple envoie 16 requêtes simultanées à l’API et affiche un simple résumé du débit.
import OpenAI from "openai";
import crypto from "crypto";
const client = new OpenAI({
apiKey: "dummy-key",
baseURL: "https://XXXXXXXX.apps01.trooper.ai/v1",
});
const CONCURRENCY = 16;
function randomPrompt() {
return `Explain this random concept in one sentence: ${crypto.randomUUID()}`;
}
const startTime = Date.now();
const requests = Array.from({ length: CONCURRENCY }, () =>
client.chat.completions.create({
model: "Qwen/Qwen3-4B",
messages: [{ role: "user", content: randomPrompt() }],
})
);
const responses = await Promise.all(requests);
const endTime = Date.now();
const durationSeconds = (endTime - startTime) / 1000;
let totalTokens = 0;
for (const r of responses) {
totalTokens += r.usage.total_tokens;
}
const tokensPerSecond = (totalTokens / durationSeconds).toFixed(2);
console.log(
`${tokensPerSecond} token/s of total ${totalTokens} tokens in ${durationSeconds.toFixed(
2
)} seconds on ${CONCURRENCY} concurrent connections`
);
Ce test est utile pour :
En cas de problème avec vLLM, veuillez contacter le support, nous avons une grande expérience de l'utilisation de vLLM : Contacts Support
Consultez notre Section des tests de référence pour comparer votre installation vLLM avec nos tests de performance, en vous concentrant sur les résultats de multi-concurrence.
vLLM exécute une API compatible OpenAI, mais ne nécessite pas de clé API réelle par défaut.
Vous avez deux options :
Si l'authentification est non appliqué, vous pouvez utiliser n'importe quelle chaîne de caractères comme clé API.
curl
-H "Authorization: Bearer dummy-key"
Node.js
apiKey: "dummy-key"
Cela suffit pour la plupart des déploiements internes, privés ou sur des réseaux sécurisés.
Vous pouvez appliquer une clé API en la définissant comme variable d’environnement lors du démarrage du conteneur.
Dans le modèle any-docker (start_args):
--env OPENAI_API_KEY=your-secret-key
vLLM exigera alors nécessite cette clé à chaque requête.
Exemple de requête curl :
curl https://your-endpoint/v1/models \
-H "Authorization: Bearer your-secret-key"
Exemple Node.js :
const client = new OpenAI({
apiKey: "your-secret-key",
baseURL: "https://your-endpoint/v1",
});
OPENAI_API_KEY dans le modèledummy-keyOPENAI_API_KEYCeci maintient l'authentification simple et explicite.
Qdrant est une base de données vectorielle haute performance qui prend en charge la recherche de similarité, la recherche sémantique et les embeddings à grande échelle.
Déployé sur un serveur Trooper.AI équipé d'un GPU, Qdrant peut indexer et rechercher des millions de vecteurs extrêmement rapidement — idéal pour les systèmes RAG, la mémoire des LLM, les moteurs de personnalisation et les systèmes de recommandation.
Le guide suivant montre comment exécuter Qdrant via Docker, comment il apparaît dans le tableau de bord, et comment l'interroger correctement Node.js.
Vous pouvez facilement exécuter l’image officielle qdrant/qdrant Conteneur Docker avec les paramètres indiqués ci-dessous.
Ces captures d'écran montrent une configuration typique utilisée sur les serveurs GPU Trooper.AI, notamment :
Une fois lancé, vous aurez un accès immédiat à la fois au Tableau de bord Qdrant et le API REST.
Le tableau de bord vous permet d’inspecter les collections, les vecteurs, les charges utiles et les index.
Une configuration de tableau de bord typique ressemble à ceci :
À partir d'ici, vous pouvez :
Voici un fonctionnel et corrigé Exemple Node.js utilisant l'API REST de Qdrant.
Corrections importantes par rapport à l'exemple original :
/collections/<collection_name>/points/searchvector doit être un tableau, pas (a, b, c)fetch, donc pas besoin de node-fetch// Qdrant Vector Search Example – fully compatible with Qdrant 1.x and 2.x
async function queryQdrant() {
// Replace "my_collection" with your actual collection name
const url = 'https://AUTOMATIC-SECURE-URL.trooper.ai/collections/my_collection/points/search';
const payload = {
vector: [0.1, 0.2, 0.3, 0.4], // Must be an array
limit: 5
};
try {
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
});
if (!response.ok) {
throw new Error(`Qdrant request failed with status: ${response.status}`);
}
const data = await response.json();
console.log('Qdrant Response:', data);
return data;
} catch (error) {
console.error('Error querying Qdrant:', error);
return null;
}
}
queryQdrant();
Qdrant s'attend à un corps JSON comme ceci :
{
"vector": [0.1, 0.2, 0.3, 0.4],
"limit": 5
}
Où :
Vous pouvez également ajouter des filtres avancés si nécessaire :
{
"vector": [...],
"limit": 5,
"filter": {
"must": [
{ "key": "category", "match": { "value": "news" } }
]
}
}
AUTOMATIC-SECURE-URL.trooper.ai avec votre point de terminaison sécurisé allouéDans cet exemple, configurons Any Docker avec votre configuration pour N8N et le stockage persistant des données afin que les redémarrages soient possibles avec des données intactes. Cette configuration n'inclut pas les webhooks. Si vous avez besoin de webhooks, accédez au modèle préconfiguré dédié : n8n
Ce guide est fourni à titre explicatif uniquement. Vous pouvez démarrer n'importe quel conteneur Docker que vous souhaitez.
Veuillez consulter les captures d’écran de la configuration ci-dessous :
Ce modèle automatise la configuration complète d'un conteneur Docker compatible GPU, y compris l'installation de tous les paquets Ubuntu et des dépendances nécessaires pour le support NVIDIA GPU. Cela simplifie le processus, en particulier pour les utilisateurs habitués aux déploiements Docker pour les serveurs web, qui nécessitent souvent une configuration plus complexe.
Ce qui suit docker run La commande est générée automatiquement par le modèle pour lancer votre conteneur GPU choisi. Elle encapsule tous les paramètres nécessaires pour des performances optimales et la compatibilité avec votre serveur Trooper.AI.
Cette commande sert d'exemple illustratif pour donner aux développeurs un aperçu des processus sous-jacents :
docker run -d \
--name ${CONTAINER_NAME} \
--restart always \
--gpus ${GPUS} \
--add-host=host.docker.internal:host-gateway \
-p ${PUBLIC_PORT}:${DOCKER_PORT} \
-v ${LOCAL_DATA_DIR}:/home/node/.n8n \
-e N8N_SECURE_COOKIE=false \
-e N8N_RUNNERS_ENABLED=true \
-e N8N_HOST=${N8N_HOST} \
-e WEBHOOK_URL=${WEBHOOK_URL} \
docker.n8n.io/n8nio/n8n \
tail -f /dev/null
N'utilisez pas cette commande manuellement si vous n'êtes pas un expert Docker ! Faites simplement confiance au modèle.
n8n débloque le potentiel d'exécution de workflows complexes directement sur votre serveur GPU Trooper.AI. Cela signifie que vous pouvez automatiser des tâches impliquant le traitement d'images/vidéos, l'analyse de données, les interactions avec les LLM, et plus encore – en tirant parti de la puissance du GPU pour des performances accélérées.
Plus précisément, vous pouvez exécuter des workflows pour :
Gardez à l’esprit que vous devrez installer des outils d’IA tels que ComfyUI et Ollama pour les intégrer à vos flux de travail N8N sur le serveur localement. Vous aurez également besoin de suffisamment de VRAM GPU pour alimenter tous les modèles. Ne donnez pas ces GPU au conteneur Docker exécutant N8N.
Sur un serveur GPU Trooper.AI, Docker vous permet de conditionner vos applications avec leurs dépendances dans des unités standardisées appelées conteneurs. Ceci est particulièrement puissant pour les charges de travail accélérées par GPU car cela assure la cohérence entre les différents environnements et simplifie le déploiement. Au lieu d'installer les dépendances directement sur le système d'exploitation hôte, les conteneurs Docker incluent tout ce dont une application a besoin pour fonctionner – y compris les bibliothèques, les outils système, l'environnement d'exécution et les paramètres.
Pour les applications GPU, Docker vous permet d'utiliser efficacement les ressources GPU du serveur. En utilisant NVIDIA Container Toolkit, les conteneurs peuvent accéder aux GPU de l'hôte, permettant ainsi un calcul accéléré pour des tâches telles que l'apprentissage automatique, l'inférence en apprentissage profond et l'analyse de données. Cet isolement améliore également la sécurité et la gestion des ressources, permettant à plusieurs applications de partager le GPU sans s'interférer les unes avec les autres. Le déploiement et la mise à l'échelle des applications basées sur le GPU deviennent beaucoup plus faciles avec Docker sur un serveur Trooper.AI.
Vous pouvez facilement exécuter plusieurs conteneurs Docker et demander de l'aide via : Contacts Support