Questo template Le consente di distribuire sia container Docker accelerati da GPU come ComfyUI che container senza supporto GPU, come ad esempio n8n. Questa flessibilità permette una vasta gamma di applicazioni, dall’elaborazione di immagini con l’intelligenza artificiale ai flussi di lavoro automatizzati, tutto all’interno di un unico ambiente gestibile. Configuri e avvii i Suoi container Docker desiderati senza difficoltà, sfruttando la potenza e la comodità di questo modello versatile.
Mentre Lei potrebbe preferire gestire direttamente le configurazioni di Docker, Le raccomandiamo di utilizzare il nostro modello «Any Docker» per la configurazione iniziale. La configurazione di Docker con supporto GPU può essere complessa, e questo modello offre una base semplificata per costruire e distribuire i Suoi container.
Per garantire il corretto funzionamento durante l’esecuzione di più container Docker sulla Sua macchina GPU server, è essenziale assegnare a ciascun container un nome e una directory dati univoci. Ad esempio, invece di utilizzare «my_docker_container», specifichi un nome come «my_comfyui_container» e imposti la directory dati su un percorso unico come /home/trooperai/docker_comfyui_data. Questo semplice passaggio consentirà a più container Docker di funzionare senza conflitti.
Questo esempio spiega passo dopo passo come eseguire un'API compatibile con vLLM OpenAI utilizzando il template Trooper.AI any-docker.
È redatto per essere comprensibile anche con conoscenze minime di Docker o di AI.
Questa configurazione utilizza Qwen/Qwen3-4B, che è supportato ed eseguibile su tutti i Trooper.AI GPU servers.
Con driver più recenti di NVIDIA, le immagini Docker di vLLM più vecchie potrebbero andare in crash con errori CUDA durante l'avvio.
Per evitare ciò, il template any-docker:
Non è necessario modificare questa logica — utilizzi semplicemente la configurazione sotto.
Come mostrato nello screenshot qui sotto, ecco come configurare e di seguito il testo completo da copiare e incollare.
| Variabile | Valore | Che cosa significa |
|---|---|---|
app_args |
--model Qwen/Qwen3-4B |
Definisce quale modello vLLM deve caricare. |
container_name |
my_vllm_api |
Nome del contenitore Docker. |
docker_reprotag |
vllm/vllm-openai:nightly |
immagine vLLM con correzioni per driver moderni NVIDIA. |
docker_port |
8000 |
Porta interna utilizzata da vLLM. |
gpus |
all |
Rende disponibili tutte le GPU a Docker. |
host_network |
YES |
Espone l'API direttamente sulla rete dell'host. |
keep_alive |
NO |
Ciclo di vita normale del container (raccomandato). |
local_data_dir |
/home/trooperai/.cache/huggingface |
Directory di cache del modello sull'host. |
docker_data_dir |
/root/.cache/huggingface |
Directory di cache del modello all'interno del contenitore. |
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=… |
Correzione obbligatoria per CUDA + memoria condivisa. |
LD_LIBRARY_PATHQuesta impostazione è obbligatoria nei sistemi con CUDA 13.
Senza di essa, vLLM potrebbe non avviare correttamente a causa di incompatibilità dei driver NVIDIA.
Non rimuoverlo.
Esegua il seguente comando:
curl https://XXXXXXXX.apps01.trooper.ai/v1/models
Se Lei vede Qwen/Qwen3-4B nella risposta, il server è in esecuzione correttamente.
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);
Questo esempio invia 16 richieste concorrenti all'API e stampa un riassunto semplice della throughput.
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`
);
Questo test è utile per:
In caso di problemi con vLLM, La preghiamo di contattare il supporto, siamo molto esperti nell’utilizzo di vLLM: Support Contacts
Si prega di fare riferimento alla nostra Sezione Benchmark per confrontare la Sua installazione di vLLM con i nostri test di prestazioni, concentrandosi sui risultati di multi-concorrenza.
vLLM esegue un API compatibile con OpenAI, ma non richiede una chiave API reale per impostazione predefinita.
Lei ha due opzioni:
Se l'autenticazione è non obbligatoria, può utilizzare qualunque stringa come chiave API.
curl
-H "Authorization: Bearer dummy-key"
Node.js
apiKey: "dummy-key"
Questo è sufficiente per la maggior parte dei deployment interni, privati o su reti sicure.
Lei può imporre un API key impostandolo come variabile d'ambiente al momento dell'avvio del container.
Nel template any-docker (start_args):
--env OPENAI_API_KEY=your-secret-key
vLLM richiederà quindi questa chiave in ogni richiesta.
Esempio richiesta con curl:
curl https://your-endpoint/v1/models \
-H "Authorization: Bearer your-secret-key"
Esempio Node.js:
const client = new OpenAI({
apiKey: "your-secret-key",
baseURL: "https://your-endpoint/v1",
});
OPENAI_API_KEY nel modellodummy-keyOPENAI_API_KEYQuesto mantiene l'autenticazione semplice ed esplicita.
Qdrant è un database vettoriale ad alte prestazioni che supporta ricerca di similarità, ricerca semantica e embeddings su larga scala.
Quando installato su un server Trooper.AI alimentato da GPU, Qdrant può indicizzare e interrogare milioni di vettori in modo estremamente veloce — ideale per sistemi RAG, memoria LLM, motori di personalizzazione e sistemi di raccomandazione.
La seguente guida illustra come eseguire Qdrant tramite Docker, come appare nel dashboard e come interrogarlo correttamente utilizzando Node.js.
Lei può facilmente avviare l'ufficiale qdrant/qdrant Contenitore Docker con le impostazioni mostrate di seguito.
Queste schermate mostrano una configurazione tipica utilizzata su server GPU di Trooper.AI, tra cui:
Una volta avviato, Lei avrà accesso immediato sia al Qdrant Dashboard che al REST API.
Il dashboard Le consente di ispezionare le collezioni, i vettori, i payload e gli indici.
Un esempio di configurazione della dashboard è questa:
Da qui, Lei può:
Di seguito è riportato un esempio funzionante e corretto di Node.js che utilizza il Qdrant REST API.
Correzioni importanti rispetto all'esempio originale:
/collections/<collection_name>/points/searchvector deve essere un array, non (a, b, c)fetch, quindi non serve 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 si aspetta un body in JSON come questo:
{
"vector": [0.1, 0.2, 0.3, 0.4],
"limit": 5
}
Dove:
È inoltre possibile aggiungere filtri avanzati se necessario:
{
"vector": [...],
"limit": 5,
"filter": {
"must": [
{ "key": "category", "match": { "value": "news" } }
]
}
}
AUTOMATIC-SECURE-URL.trooper.ai con il Suo endpoint sicuro allocatoIn questo esempio, configureremo Any Docker con la Sua configurazione per N8N e archiviazione dati persistente in modo che i riavvii siano possibili con dati integri. Questa configurazione non include webhook. Se Le servono webhook, passi al template preconfigurato dedicato: n8n
Questa guida serve solo a scopo esplicativo. Lei può avviare qualsiasi contenitore Docker che preferisca.
Veda le schermate della configurazione qui sotto:
Questo modello automatizza l’intera configurazione di un contenitore Docker abilitato alla GPU, inclusa l’installazione di tutti i pacchetti e le dipendenze Ubuntu necessari per il supporto alle GPU NVIDIA. Questo semplifica il processo, soprattutto per gli utenti abituati ai deployment Docker per server web, che spesso richiedono configurazioni più complesse.
Seguente docker run Il comando viene generato automaticamente dal template per avviare il Suo GPU container scelto. Contiene tutte le impostazioni necessarie per prestazioni ottimali e compatibilità con il Suo server Trooper.AI.
Questo comando funge da esempio illustrativo per fornire agli sviluppatori una panoramica dei processi sottostanti:
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
Non utilizzi questo comando manualmente se non è un esperto di Docker! Si limiti a fidarsi del modello.
n8n sblocca il potenziale per eseguire workflow complessi direttamente sulla Sua macchina Trooper.AI con GPU. Ciò significa che può automatizzare compiti che coinvolgono elaborazione di immagini/video, analisi dei dati, interazioni con LLM e molto altro – sfruttando il potere della GPU per prestazioni accelerate.
In particolare, Lei può eseguire workflow per:
Tenga presente che dovrà installare strumenti AI come ComfyUI e Ollama per integrarli nei suoi flussi di lavoro N8N sulla macchina localmente. Inoltre, avrà bisogno di sufficiente GPU VRAM per alimentare tutti i modelli. Non assegni quelle GPU al docker in esecuzione con N8N.
Su un server GPU di Trooper.AI, Docker consente di imballare applicazioni e le loro dipendenze in unità standardizzate chiamate container. Questo è particolarmente potente per i carichi di lavoro accelerati dalla GPU, poiché garantisce coerenza tra ambienti diversi e semplifica il deployment. Invece di installare le dipendenze direttamente sul sistema operativo host, i container Docker includono tutto ciò che un’applicazione necessita per funzionare – compresi librerie, strumenti di sistema, runtime e impostazioni.
Per le applicazioni GPU, Docker consente di sfruttare efficacemente le risorse GPU del server. Utilizzando il NVIDIA Container Toolkit, i container possono accedere alle GPU dell’host, abilitando il calcolo accelerato per compiti come machine learning, deep learning inference e analisi dei dati. Questa isolamento migliora inoltre la sicurezza e la gestione delle risorse, permettendo a più applicazioni di condividere la GPU senza interferire tra loro. La distribuzione e lo scaling di applicazioni basate su GPU diventa significativamente più semplice con Docker su un server Trooper.AI.
Può facilmente eseguire più container docker e chiedere aiuto tramite: Support Contacts