Ten szablon umożliwia wdrażanie zarówno kontenerów Docker z akceleracją GPU, takich jak ComfyUI, jak i kontenerów bez obsługi GPU, takich jak n8n. Ta elastyczność pozwala na szeroki zakres zastosowań, od generowania obrazów AI po zautomatyzowane przepływy pracy, wszystko w jednym, łatwym w zarządzaniu środowisku. Skonfiguruj i uruchom żądane kontenery Docker bez wysiłku, wykorzystując moc i wygodę tego wszechstronnego szablonu.
Chociaż możesz preferować bezpośrednie zarządzanie konfiguracjami Dockera, zalecamy skorzystanie z naszego szablonu „Any Docker”. do konfiguracji początkowejKonfigurowanie Dockera z obsługą GPU może być skomplikowane, a ten szablon oferuje usprawnioną podstawę do budowania i wdrażania Twoich kontenerów.
Aby zapewnić prawidłowe działanie podczas uruchamiania wielu kontenerów Docker na serwerze GPU, konieczne jest przypisanie każdemu kontenerowi unikalnej nazwy i katalogu danych. Na przykład, zamiast używać „my_docker_container”, określ nazwę taką jak „my_comfyui_container” i ustaw katalog danych na unikalną ścieżkę, taką jak /home/trooperai/docker_comfyui_dataTen prosty krok pozwoli na uruchomienie wielu kontenerów Docker bez konfliktów.
Ten przykład wyjaśnia krok po kroku jak uruchomić API kompaty kompatybilne z vLLM OpenAI używając Trooper.AI jakikolwiek-docker template.
Napisane w sposób zrozumiały nawet dla osób z niewielką wiedzą na temat Dockera lub sztucznej inteligencji.
Ta konfiguracja wykorzystuje Qwen/Qwen3-4Bktóry obsługiwane i działające na wszystkich serwerach GPU Trooper.AI.
Na nowszych sterownikach NVIDIA starsze obrazy Docker vLLM mogą się zawieszać z błędami CUDA podczas uruchamiania.
Aby tego uniknąć, szablon any-docker:
Nie musisz modyfikować tej logiki — po prostu użyj konfiguracji poniżej.
Zobacz tutaj zrzut ekranu, jak skonfigurować oraz pełny tekst do skopiowania i wklejenia poniżej.
| Zmienna | Wartość | Co to oznacza |
|---|---|---|
app_args |
--model Qwen/Qwen3-4B |
Określa, który model ma załadować vLLM. |
container_name |
my_vllm_api |
Nazwa kontenera Docker. |
docker_reprotag |
vllm/vllm-openai:nightly |
Obraz vLLM z poprawkami dla nowoczesnych sterowników NVIDIA. |
docker_port |
8000 |
Port wewnętrzny używany przez vLLM. |
gpus |
all |
Udostępnia wszystkie GPU dla Dockera. |
host_network |
YES |
Udostępnia API bezpośrednio w sieci hosta. |
keep_alive |
NO |
Normalny cykl życia kontenera (zalecane). |
local_data_dir |
/home/trooperai/.cache/huggingface |
Katalog pamięci podręcznej modelu na hoście. |
docker_data_dir |
/root/.cache/huggingface |
Katalog pamięci podręcznej modelu wewnątrz kontenera. |
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=… |
Wymagana poprawka dla CUDA i pamięci współdzielonej. |
LD_LIBRARY_PATHTa konfiguracja jest obowiązkowy na systemach CUDA 13.
Bez tego vLLM może nie uruchomić się z powodu niezgodności sterowników NVIDIA.
Nie usuwaj tego.
Uruchom następujące polecenie:
curl https://XXXXXXXX.apps01.trooper.ai/v1/models
Jeśli widzisz Qwen/Qwen3-4B w odpowiedzi, serwer działa poprawnie.
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);
Ten przykład wysyła 16 równoczesnych żądań do API i wyświetla proste podsumowanie przepustowości.
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`
);
Ten test jest przydatny do:
W przypadku jakichkolwiek problemów z vLLM, skontaktuj się z naszym wsparciem, mamy duże doświadczenie w korzystaniu z vLLM: Kontakty z wsparciem
Zapoznaj się z naszą Sekcja z wynikami testów aby porównać instalację vLLM z naszymi testami wydajności, koncentrując się na wynikach dotyczących współbieżności.
vLLM uruchamia API kompatybilne z OpenAI, ale domyślnie nie wymaga prawdziwego klucza API.
Masz dwie opcje:
Jeśli uwierzytelnianie jest nie wymuszono, możesz użyć dowolny ciąg znaków jako klucz API.
curl
-H "Authorization: Bearer dummy-key"
Node.js
apiKey: "dummy-key"
Jest to wystarczające dla większości wdrożeń wewnętrznych, prywatnych lub zabezpieczonych sieci.
Możesz wymusić użycie klucza API, ustawiając go jako zmienną środowiskową podczas uruchamiania kontenera.
W szablonie any-docker (start_args):
--env OPENAI_API_KEY=your-secret-key
vLLM wtedy wymagany jest ten klucz w każdym żądaniu.
Przykładowe żądanie curl:
curl https://your-endpoint/v1/models \
-H "Authorization: Bearer your-secret-key"
Przykład Node.js:
const client = new OpenAI({
apiKey: "your-secret-key",
baseURL: "https://your-endpoint/v1",
});
OPENAI_API_KEY w szabloniedummy-keyOPENAI_API_KEYTo utrzymuje uwierzytelnianie proste i jednoznaczne.
Qdrant to wysokowydajna baza danych wektorowa, która obsługuje wyszukiwanie podobieństwa, wyszukiwanie semantyczne i osadzanie w dużej skali.
Wdrożony na serwerze Trooper.AI z GPU, Qdrant może indeksować i wyszukiwać miliony wektorów niezwykle szybko — idealnie nadaje się do systemów RAG, pamięci LLM, silników personalizacji i systemów rekomendacji.
Poniższy przewodnik pokazuje jak uruchomić Qdrant przez Docker, jak wygląda w panelu sterowania, i jak prawidłowo go zapytywać używając Node.js.
Możesz łatwo uruchomić oficjalny qdrant/qdrant Kontener Dockera z ustawieniami przedstawionymi poniżej.
Te zrzuty ekranu pokazują typową konfigurację używaną na serwerach GPU Trooper.AI, w tym:
Po uruchomieniu będziesz miał natychmiastowy dostęp zarówno do Panel Qdrant oraz interfejs API REST API.
Panel umożliwia przeglądanie kolekcji, wektorów, ładunków i indeksów.
Typowa konfiguracja panelu wygląda następująco:
Stąd możesz:
Poniżej znajduje się działające i poprawione Przykład Node.js wykorzystujący API REST Qdrant.
Ważne poprawki w stosunku do oryginalnego przykładu:
/collections/<collection_name>/points/searchvector musi być tablica, nie (a, b, c)fetchwięc nie ma potrzeby 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 oczekuje treści JSON w następującym formacie:
{
"vector": [0.1, 0.2, 0.3, 0.4],
"limit": 5
}
Gdzie:
Możesz również dodać zaawansowane filtry, jeśli zajdzie potrzeba:
{
"vector": [...],
"limit": 5,
"filter": {
"must": [
{ "key": "category", "match": { "value": "news" } }
]
}
}
AUTOMATIC-SECURE-URL.trooper.ai z Twoim przydzielonym bezpiecznym punktem końcowymW tym przykładzie skonfigurujmy Any Docker z Twoją konfiguracją dla N8N i trwałą pamięcią masową, aby restarty były możliwe z zachowaniem danych. Ta konfiguracja nie obejmuje webhooków. Jeśli potrzebujesz webhooków, przejdź do dedykowanego, wstępnie skonfigurowanego szablonu: n8n
Ten przewodnik służy wyłącznie do wyjaśnienia. Możesz uruchomić dowolny kontener dockerowy, który chcesz.
Zobacz zrzuty ekranu konfiguracji poniżej:
Szablon ten automatyzuje kompletne ustawienie kontenera Docker z obsługą GPU, w tym instalację wszystkich niezbędnych pakietów Ubuntu i zależności dla obsługi NVIDIA GPU. Upraszcza to proces, szczególnie dla użytkowników przyzwyczajonych do wdrożonych Docker dla serwerów internetowych, które często wymagają bardziej złożonej konfiguracji.
Poniższy docker run polecenie jest generowane automatycznie przez szablon w celu uruchomienia wybranego kontenera GPU. Zawiera ono wszystkie niezbędne ustawienia dla optymalnej wydajności i kompatybilności z serwerem Trooper.AI.
Polecenie to służy jako przykład ilustracyjny, aby zapewnić programistom wgląd w podstawowe procesy:
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
Nie używaj tego polecenia ręcznie, jeśli nie jesteś ekspertem od Dockera! Po prostu zaufaj szablonowi.
n8n odblokowuje potencjał do uruchamiania złożonych przepływów pracy bezpośrednio na serwerze GPU Trooper.AI. Oznacza to, że możesz zautomatyzować zadania związane z przetwarzaniem obrazów/wideo, analizą danych, interakcjami LLM i innymi – wykorzystując moc GPU dla przyspieszonej wydajności.
Konkretnie możesz uruchamiać przepływ pracy dla:
Pamiętaj, że będziesz musiał zainstalować narzędzia AI, takie jak ComfyUI i Ollama, aby zintegrować je z Twoimi przepływami pracy N8N na serwerze lokalnie. Dodatkowo potrzebujesz wystarczającej ilości pamięci GPU VRAM, aby obsługiwać wszystkie modele. Nie przydzielaj tych GPU do dockera działającego z N8N.
Na serwerze GPU Trooper.AI Docker pozwala na pakowanie aplikacji z ich zależnościami w standaryzowane jednostki zwane kontenerami. Jest to szczególnie potężne dla obciążeń przyspieszonych przez GPU, ponieważ zapewnia spójność w różnych środowiskach i upraszcza wdrożenia. Zamiast instalować zależności bezpośrednio na systemie operacyjnym hosta, kontenery Docker zawierają wszystko, co jest potrzebne do uruchomienia aplikacji - w tym biblioteki, narzędzia systemowe, środowisko wykonawcze i ustawienia.
Dla aplikacji GPU Docker umożliwia efektywne wykorzystanie zasobów GPU serwera. Dzięki wykorzystaniu NVIDIA Container Toolkit kontenery mogą uzyskiwać dostęp do GPU hosta, umożliwiając przyspieszone obliczenia dla zadań takich jak uczenie maszynowe, wnioskowanie głębokiego uczenia się i analityka danych. Ta izolacja również poprawia bezpieczeństwo i zarządzanie zasobami, umożliwiając wielu aplikacjom współdzielenie GPU bez wzajemnego zakłócania. Wdrożenie i skalowanie aplikacji opartych na GPU staje się znacznie łatwiejsze dzięki Dockerowi na serwerze Trooper.AI.
Możesz łatwo uruchomić wiele kontenerów Docker i poprosić o pomoc poprzez: Kontakty z wsparciem