diagram / models.py
ivanm151's picture
qwen 3B
f831d3d
from llama_cpp import Llama
from huggingface_hub import hf_hub_download
import os
# Параметры модели (Q5_K_M — хороший баланс скорость/качество на CPU)
REPO_ID = "bartowski/Qwen2.5-3B-Instruct-GGUF"
FILENAME = "Qwen2.5-3B-Instruct-Q5_K_M.gguf" # если хочешь другой квант — Q4_K_M (быстрее), Q6_K (лучше качество)
# Директория кэша (в HF Spaces /tmp сохраняется между перезапусками, модель не скачивается заново)
CACHE_DIR = "/tmp/hf/models"
os.makedirs(CACHE_DIR, exist_ok=True)
llm = None
def load_model():
global llm
if llm is not None:
return llm # уже загружено — не тратим время
print(f"Скачиваем/находим модель {REPO_ID}/{FILENAME} ... (первый раз ~5–15 мин на HF CPU)")
# Скачивание (или берём из кэша, если уже есть)
model_path = hf_hub_download(
repo_id=REPO_ID,
filename=FILENAME,
cache_dir=CACHE_DIR,
local_dir=CACHE_DIR, # сохраняем явно
local_dir_use_symlinks=False # без ссылок, чтобы файл был физически
)
print(f"Путь к модели: {model_path}")
llm = Llama(
model_path=model_path,
n_ctx=8192, # контекст — достаточно для длинных описаний + промпта
n_threads=0, # все доступные ядра CPU
n_gpu_layers=0, # строго CPU
n_batch=512,
verbose=True # логи в консоль Spaces — увидишь токены/сек
)
print("Модель Qwen2.5-7B-Instruct успешно загружена в CPU-режиме")
return llm