lucianotonet commited on
Commit
0b1df81
1 Parent(s): 752dfde

Atualiza Dockerfile e app.py para modelo Qwen2-VL

Browse files

Migração para uma base de imagem PyTorch otimizada com CUDA, permitindo melhor desempenho em inferências. A inclusão de um novo script app.py configura uma API FastAPI para interações com o modelo. A especificação de dependências no requirements.txt garante que todas as bibliotecas necessárias estejam instaladas. Essas mudanças visam facilitar a implementação e a utilização do modelo de forma eficiente em ambientes de produção.

Files changed (3) hide show
  1. Dockerfile +19 -21
  2. app.py +17 -0
  3. requirements.txt +6 -0
Dockerfile CHANGED
@@ -1,28 +1,26 @@
1
- FROM ollama/ollama:latest
2
 
3
- RUN apt-get update && apt-get install -y \
4
- git \
5
- && rm -rf /var/lib/apt/lists/*
6
 
7
- # https://huggingface.co/docs/hub/spaces-sdks-docker-first-demo
8
- RUN useradd -m -u 1000 user
9
-
10
- USER user
11
- ENV HOME=/home/user \
12
- PATH=/home/user/.local/bin:$PATH \
13
- OLLAMA_HOST=0.0.0.0 \
14
- OLLAMA_DEBUG=True
15
 
16
- # Clonar o modelo do Hugging Face (substitua [nome-do-modelo] pelo modelo desejado)
17
- # RUN git clone https://huggingface.co/[nome-do-modelo] $HOME/models/[nome-do-modelo]
 
18
 
19
- # Copiar o Modelfile para o contêiner
20
- # COPY --chown=user:user Modelfile $HOME/Modelfile
 
 
21
 
22
- # Iniciar o servidor Ollama, baixar o modelo e manter o servidor em execução
23
- # RUN ollama serve & sleep 5 && ollama pull lucianotonet/llamaclaude && pkill ollama
24
 
25
- # Expor a porta do Ollama
26
- EXPOSE 11434
27
 
28
- CMD ["serve"]
 
 
1
+ # Dockerfile para executar o modelo Qwen2-VL-2B-Instruct no Hugging Face Spaces
2
 
3
+ # Usar a imagem base do PyTorch com suporte a CUDA
4
+ FROM pytorch/pytorch:2.1.0-cuda11.8-cudnn8-runtime
 
5
 
6
+ # Instalar dependências
7
+ COPY requirements.txt ./
8
+ RUN pip install --no-cache-dir -r requirements.txt
 
 
 
 
 
9
 
10
+ # Definir variáveis de ambiente
11
+ ENV HUGGINGFACE_HUB_CACHE=/home/user/.cache/huggingface
12
+ ENV TRANSFORMERS_CACHE=/home/user/.cache/huggingface/transformers
13
 
14
+ # Criar usuário não-root
15
+ RUN useradd -m -u 1000 user
16
+ USER user
17
+ WORKDIR /home/user
18
 
19
+ # Copiar o código do modelo
20
+ COPY --chown=user:user app.py .
21
 
22
+ # Expor a porta para a API
23
+ EXPOSE 7860
24
 
25
+ # Comando para executar a aplicação
26
+ CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
app.py ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from transformers import Qwen2VLForConditionalGeneration, AutoProcessor
3
+ import torch
4
+
5
+ app = FastAPI()
6
+
7
+ model = Qwen2VLForConditionalGeneration.from_pretrained("Qwen/Qwen2-VL-2B-Instruct", torch_dtype="auto", device_map="auto")
8
+ processor = AutoProcessor.from_pretrained("Qwen/Qwen2-VL-2B-Instruct")
9
+
10
+ @app.post("/predict")
11
+ async def predict(messages: list):
12
+ # Processamento e inferência
13
+ text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
14
+ inputs = processor(text=[text], padding=True, return_tensors="pt").to("cuda") # Altere para "cpu" se não tiver GPU
15
+ generated_ids = model.generate(**inputs, max_new_tokens=128)
16
+ output_text = processor.batch_decode(generated_ids, skip_special_tokens=True)
17
+ return {"response": output_text}
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ transformers
2
+ accelerate
3
+ safetensors
4
+ sentencepiece
5
+ fastapi
6
+ uvicorn