7.ai

发表于 未分类 分类,标签:
安装驱动
sudo ubuntu-drivers autoinstall
或手动安装
sudo apt install -y nvidia-driver-550 nvidia-utils-550
naidia-smi

进入容器
docker exec -it ollama bash

容器内下载7b模型
ollama pull qwen2:7b
拉去一个支持嵌入的模型
ollama pull nomic-embed-text

安装工具让容器可以用gpu
下载
https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/
nvidia-container-toolkit_1.16.1-1_amd64.deb 
libnvidia-container1_1.16.1-1_amd64.deb
libnvidia-container-tools_1.16.1-1_amd64.deb
单独下载
https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/nvidia-container-toolkit-base_1.16.1-1_amd64.deb
nvidia-container-toolkit-base_1.16.1-1_amd64.deb
以上四个包

安装
sudo dpkg -i nvidia-container-toolkit-base_1.16.1-1_amd64.deb
sudo dpkg -i libnvidia-container1_*.deb
sudo dpkg -i libnvidia-container-tools_*.deb
sudo dpkg -i nvidia-container-toolkit_*.deb

配置容器使用gpu
sudo nvidia-ctk runtime configure --runtime=docker
重启docker
sudo systemctl restart docker

测试ollama
curl 

配置compose
services:
  ollama:
    image: registry.cn-hangzhou.aliyuncs.com/leiuvn/ai:ollama-0.12.10
    container_name: ollama
    restart: unless-stopped
    ports:
      - "8011:11434"
    volumes:
      - /data/wwwroot/ai/ollama_data:/root/.ollama
      - /data/wwwroot/ai/ollama_models:/root/.ollama/models
    networks:
      lbu_net:
        ipv4_address: 172.20.0.27
    mem_limit: 8g
    cpus: 8.0

    runtime: nvidia
    environment:
      - NVIDIA_VISIBLE_DEVICES=all

    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:11434/api/tags"]
      interval: 30s
      timeout: 5s
      retries: 3

  open-webui:
    image: registry.cn-hangzhou.aliyuncs.com/leiuvn/ai:open-webui-0.3.35-ollama
    container_name: open-webui
    restart: unless-stopped
    ports:
      - "8012:8080"
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - ENABLE_OLLAMA_EMBEDDINGS=true
      - OLLAMA_EMBEDDING_MODEL=nomic-embed-text  # 指定嵌入模型
      - DEFAULT_MODELS=qwen2:7b
      - HF_ENDPOINT=https://hf-mirror.com
    volumes:
      - /data/wwwroot/ai/open_webui_data:/app/backend/data
    depends_on:
      - ollama
    networks:
      lbu_net:
        ipv4_address: 172.20.0.28
    mem_limit: 8g
    cpus: 8.0

networks:
  lbu_net:
    external: true

    
手动下载模型
mkdir -p /data/wwwroot/ai/ollama_models/blobs
mkdir -p /data/wwwroot/ai/ollama_models/manifests/registry.ollama.ai/library/qwen2/7b

cd /data/wwwroot/ai/ollama_models/blobs
wget https://huggingface.co/Qwen/Qwen2-7B-Instruct-GGUF/resolve/main/qwen2-7b-instruct-q4_0.gguf

SHA=$(sha256sum qwen2-7b-instruct-q4_0.gguf | awk '{print $1}')
mv qwen2-7b-instruct-q4_0.gguf sha256:$SHA

cat > /data/wwwroot/ai/ollama_models/manifests/registry.ollama.ai/library/qwen2/7b/Modelfile << 'EOF'
FROM /data/wwwroot/ai/ollama_models/blobs/sha256:{{SHA}}
TEMPLATE "{{ .Prompt }}"
EOF

sed -i "s/{{SHA}}/$SHA/" /data/wwwroot/ai/ollama_models/manifests/registry.ollama.ai/library/qwen2/7b/Modelfile

docker run --rm -it \
  -v /data/wwwroot/ai/ollama_models:/root/.ollama/models \
  registry.cn-hangzhou.aliyuncs.com/leiuvn/ai:ollama-0.12.10 \
  ollama create qwen2:7b -f /root/.ollama/models/manifests/registry.ollama.ai/library/qwen2/7b/Modelfile
  

微调模型
第一步
# 1. 下载模型https://ollama.com/library
docker run --rm -v /data/wwwroot/ai/ollama_models:/root/.ollama/models \
  registry.cn-hangzhou.aliyuncs.com/leiuvn/ai:ollama-0.12.10 \
  ollama pull qwen2:7b
  ollama pull deepseek-r1:7b
  
# 2. 安装转换工具
pip install huggingface-hub transformers gguf
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
pip install -r requirements.txt

# 3. 找到 GGUF 文件路径(宿主机)
ls /data/wwwroot/ai/ollama_models/blobs/sha256*
# 假设输出:sha256:1a2b3c...

# 4. 转为 HuggingFace 格式(用于 PyTorch)
python convert-gguf-to-hf.py \
  --gguf /data/wwwroot/ai/ollama_models/blobs/sha256:1a2b3c... \
  --output-dir /data/wwwroot/ai/hf_models/qwen2-7b-base
  
第二步
# 安装 Unsloth(支持 Qwen2,显存省 70%)
pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
pip install --no-deps trl peft accelerate bitsandbytes


# finetune.py
from unsloth import FastLanguageModel
import torch
from datasets import load_dataset

# 1. 加载模型
model, tokenizer = FastLanguageModel.from_pretrained(
    "/data/wwwroot/ai/hf_models/qwen2-7b-base",
    dtype=None,
    load_in_4bit=True,
)

# 2. 添加 LoRA
model = FastLanguageModel.get_peft_model(
    model,
    r=16,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
    lora_alpha=16,
    lora_dropout=0,
    bias="none",
    use_gradient_checkpointing="unsloth",
)

# 3. 准备数据
dataset = load_dataset("json", data_files="/data/wwwroot/ai/finetune_data/train.jsonl", split="train")

# 4. 训练
from trl import SFTTrainer
trainer = SFTTrainer(
    model=model,
    tokenizer=tokenizer,
    train_dataset=dataset,
    dataset_text_field="prompt",
    max_seq_length=2048,
    args=TrainingArguments(
        per_device_train_batch_size=2,
        gradient_accumulation_steps=4,
        warmup_steps=5,
        max_steps=60,
        learning_rate=2e-4,
        fp16=not torch.cuda.is_bf16_supported(),
        bf16=torch.cuda.is_bf16_supported(),
        logging_steps=1,
        output_dir="/data/wwwroot/ai/ft_output",
        optim="adamw_8bit",
    ),
)

trainer.train()

# 5. 保存
model.save_pretrained("/data/wwwroot/ai/ft_output")
tokenizer.save_pretrained("/data/wwwroot/ai/ft_output")

第三步
cd llama.cpp

# 1. 转为 GGUF
python convert-hf-to-gguf.py /data/wwwroot/ai/ft_output --outfile qwen2-7b-ft.gguf

# 2. 量化(推荐 Q4_K_M,平衡)
./quantize qwen2-7b-ft.gguf qwen2-7b-ft-q4.gguf Q4_K_M

第四步
# 1. 计算 SHA256
SHA=$(sha256sum qwen2-7b-ft-q4.gguf | cut -d' ' -f1)

# 2. 放入 blobs
mkdir -p /data/wwwroot/ai/ollama_models/blobs
cp qwen2-7b-ft-q4.gguf /data/wwwroot/ai/ollama_models/blobs/sha256:$SHA

# 3. 创建 Modelfile
mkdir -p /data/wwwroot/ai/ollama_models/manifests/registry.ollama.ai/library/qwen2/7b-ft

cat > /data/wwwroot/ai/ollama_models/manifests/registry.ollama.ai/library/qwen2/7b-ft/Modelfile << EOF
FROM ./blobs/sha256:$SHA
PARAMETER num_ctx 4096
PARAMETER num_batch 4
PARAMETER num_gqa 8
EOF

# 4. 注册模型
docker run --rm -it \
  -v /data/wwwroot/ai/ollama_models:/root/.ollama/models \
  registry.cn-hangzhou.aliyuncs.com/leiuvn/ai:ollama-0.12.10 \
  ollama create qwen2:7b-ft -f /root/.ollama/models/manifests/registry.ollama.ai/library/qwen2/7b-ft/Modelfile



0 篇评论

发表我的评论