first commit
This commit is contained in:
8
CHANGELOG.md
Normal file
8
CHANGELOG.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [1.0.0] - 2026-03-27
|
||||
### Added
|
||||
- Inizializzazione ambiente vLLM per Qwen3.5-0.8B GGUF.
|
||||
- Dockerfile con build da sorgente per architettura gfx1100.
|
||||
- docker-compose.yml con HSA_OVERRIDE e IPC host.
|
||||
22
Dockerfile
Normal file
22
Dockerfile
Normal file
@@ -0,0 +1,22 @@
|
||||
FROM rocm/pytorch:latest
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
# Specifica l'architettura target per la compilazione dei kernel C++/HIP
|
||||
ENV PYTORCH_ROCM_ARCH="gfx1100"
|
||||
ENV HSA_OVERRIDE_GFX_VERSION="11.0.0"
|
||||
ENV HIP_VISIBLE_DEVICES="0"
|
||||
|
||||
RUN apt-get update -y && apt-get install -y git build-essential python3-dev && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /workspace
|
||||
|
||||
# Clona vLLM e usa un tag stabile recente che supporta GGUF (0.6.0+)
|
||||
RUN git clone https://github.com/vllm-project/vllm.git . && git checkout v0.6.3
|
||||
|
||||
RUN pip install -U pip && pip install -r requirements-rocm.txt
|
||||
|
||||
# Compilazione (richiederà tempo)
|
||||
RUN python3 setup.py install
|
||||
|
||||
EXPOSE 8000
|
||||
ENTRYPOINT ["python3", "-m", "vllm.entrypoints.openai.api_server"]
|
||||
27
docker-compose.yml
Normal file
27
docker-compose.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
services:
|
||||
vllm-qwen:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
container_name: vllm_qwen_08b
|
||||
ports:
|
||||
- "8000:8000"
|
||||
ipc: host
|
||||
devices:
|
||||
- "/dev/kfd:/dev/kfd"
|
||||
- "/dev/dri:/dev/dri"
|
||||
group_add:
|
||||
- video
|
||||
- render
|
||||
volumes:
|
||||
# Montaggio in sola lettura del modello
|
||||
- /opt/models:/app/models:ro
|
||||
environment:
|
||||
- HSA_OVERRIDE_GFX_VERSION=11.0.0
|
||||
- HIP_VISIBLE_DEVICES=0
|
||||
command: >
|
||||
--model /app/models/Qwen3.5-0.8B-UD-Q8_K_XL.gguf
|
||||
--quantization gguf
|
||||
--gpu-memory-utilization 0.50
|
||||
--max-model-len 4096
|
||||
restart: unless-stopped
|
||||
25
test_api.py
Normal file
25
test_api.py
Normal file
@@ -0,0 +1,25 @@
|
||||
import urllib.request
|
||||
import json
|
||||
|
||||
url = "http://localhost:8000/v1/chat/completions"
|
||||
headers = {"Content-Type": "application/json"}
|
||||
data = {
|
||||
"model": "/app/models/Qwen3.5-0.8B-UD-Q8_K_XL.gguf",
|
||||
"messages": [
|
||||
{"role": "system", "content": "Sei un assistente utile e conciso."},
|
||||
{"role": "user", "content": "Quali sono i vantaggi principali del sistema operativo Linux?"}
|
||||
],
|
||||
"max_tokens": 100,
|
||||
"temperature": 0.2
|
||||
}
|
||||
|
||||
req = urllib.request.Request(url, data=json.dumps(data).encode('utf-8'), headers=headers)
|
||||
|
||||
print("Inviando richiesta a vLLM...")
|
||||
try:
|
||||
with urllib.request.urlopen(req) as response:
|
||||
result = json.loads(response.read().decode('utf-8'))
|
||||
print("\n✅ TEST SUPERATO. Risposta dal modello:\n")
|
||||
print(result['choices'][0]['message']['content'])
|
||||
except Exception as e:
|
||||
print(f"\n❌ ERRORE DURANTE IL TEST: {e}")
|
||||
Reference in New Issue
Block a user