V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ZimaBlueee
V2EX  ›  Local LLM

ollama 新手,求问哥哥们 2 个问题,找了好多资料还是没弄明白

  •  
  •   ZimaBlueee · 1 天前 · 1771 次点击

    1. 如何单独获取大模型的 modelfile 文件

    我的服务器是内网,所以只能手动导入从其他地方下载的模型,然后导入到服务器中。

    这个时候就出现一个问题:如果直接从 ollama 下载镜像,会顺带下载 modelfile 文件。

    而我模型是自己导入的,每个大模型的 modelfile 文件都不一样,请问有什么单独获取 modelfile 的途径嘛?

    2. 怎么部署大模型到指定显卡上

    我的服务器有 2 块显卡,现在希望每块显卡都跑一个不同的大模型。

    比如,我想让第一块显卡跑 qwen 大模型;第二块显卡跑 deepseek 。怎么如何指定呢?

    19 条回复    2025-03-11 15:20:29 +08:00
    iSkylar
        1
    iSkylar  
       23 小时 54 分钟前   ❤️ 1
    1. Modelfile 自定义编写即可,你可以查看一下它的文本规范
    2. 查看显卡编号,然后通过使用环境变量指定 GPU 跑大模型,另外也可以选择 docker 容器来指定 GPU
    hcr707305003
        2
    hcr707305003  
       23 小时 52 分钟前
    huggingface 上面不是有 modelfile 文件吗,可以参考
    ZimaBlueee
        3
    ZimaBlueee  
    OP
       23 小时 48 分钟前
    @iSkylar 我现在是用 docker 跑的,这是我的配置:
    ```
    services:
    ollama:
    volumes:
    - /opt/models:/root/.ollama
    - ./modelfiles:/root/modelfiles
    container_name: ollama
    tty: true
    restart: always
    image: ollama/ollama:latest
    ports:
    - 7013:11434
    environment:
    - OLLAMA_KEEP_ALIVE=24h
    - TZ=Asia/Shanghai
    networks:
    - ollama-docker
    deploy:
    resources:
    reservations:
    devices:
    - driver: nvidia
    device_ids: ["1"]
    capabilities: [gpu]
    ```

    我在配置中指定了:device_ids: ["1"],也就是这个容器使用第二块显卡,这里我需要把 1 改成 all 吗?改成 all 的话,还能使用环境变量指定 GPU 嘛,请问是在 modelfile 里指定 GPU 编号嘛?
    b821025551b
        4
    b821025551b  
       23 小时 46 分钟前   ❤️ 1
    ollama show --modelfile modename 一下可以看到,modelfile 文件就是 ollama template +params 放在一起;
    一个 ollama 服务貌似只能一个显卡,倒是可以启动多个服务在不同端口上,每个服务用 CUDA_VISIBLE_DEVICES 指定不同显卡。
    ZimaBlueee
        5
    ZimaBlueee  
    OP
       23 小时 42 分钟前
    @hcr707305003 很多模型找不到 modelfile ,比如这个: https://huggingface.co/Qwen/QwQ-32B
    iSkylar
        6
    iSkylar  
       23 小时 39 分钟前   ❤️ 1
    @ZimaBlueee
    1. 里我需要把 1 改成 all 吗?改成 all 的话,还能使用环境变量指定 GPU 嘛?
    - 基于 docker 配置 device_ids: ["all"],然后也可以通过环境配置来指定 GPU ,再 env 那里配置,例如 CUDA_VISIBLE_DEVICES=1
    2. 在 modelfile 里指定 GPU 编号嘛?
    - 不行,Modelfile 是 Ollama 用来定义模型配置的文件(例如模型路径、参数、提示词等),但它无法直接控制 GPU 分配,GPU 分配是由运行时环境( Docker 或系统)决定的。
    ZimaBlueee
        7
    ZimaBlueee  
    OP
       23 小时 38 分钟前
    @b821025551b 刚看了一下 ollama show --modelfile 还会额外补充信息,比我自己写的 modelfile 内容还要丰富很多
    op351
        8
    op351  
       23 小时 37 分钟前
    Ollama 模型直接下载并手动安装的项目
    https://github.com/amirrezaDev1378/ollama-model-direct-download
    iSkylar
        9
    iSkylar  
       23 小时 36 分钟前
    @ZimaBlueee
    3. 很多模型找不到 modelfile ,比如这个: https://huggingface.co/Qwen/QwQ-32B
    -从 Hugging Face 下载 GGUF 格式并手动创建 Modelfile
    ZimaBlueee
        10
    ZimaBlueee  
    OP
       23 小时 34 分钟前
    @iSkylar 明白您的意思,但是环境变量不是只能设置一个嘛?如何在同一个 docker 容器内为 2 个大模型分配各自的显卡呢?

    请问是这样操作吗:我部署 A 模型时,先把 CUDA_VISIBLE_DEVICES=0 ;部署 B 模型时,再把 CUDA_VISIBLE_DEVICES=1 。这样不会改变 A 模型的运行显卡吧?
    ZztGqk
        11
    ZztGqk  
       23 小时 30 分钟前 via iPhone   ❤️ 1
    走环境变量,就楼上老哥给的 CUDA_VISIBLE…,不想用 docker 可以直接用 serve ,别用 run 就行,把用 run 开的 service 关掉。用 serve 在 linux 上需要手动指定下模型位置,同时配合环境变量和指定不同的端口就可以多卡了。确实难用…
    joyhub2140
        12
    joyhub2140  
       23 小时 24 分钟前   ❤️ 1
    1. ollama 没研究过本地权重文件加载,但 vllm 我知道是可以直接加载本地模型文件的,不用走下载。

    2. docker 可以直接指定 gpu 编号给容器 如--gpus "device=0" 分配第一张卡。
    ZimaBlueee
        13
    ZimaBlueee  
    OP
       23 小时 21 分钟前
    @joyhub2140 如果想分配另一张卡,是需要再开一个新的容器吗?
    b821025551b
        14
    b821025551b  
       23 小时 21 分钟前
    @ZimaBlueee #7 你点开 ollama 官网的模型库,实际上就是 template 文件+params 文件+license 文件,把这几个文件下回来拼在一起就是 modelfile 文件; ollama 现在好像不支持启动时传参, 所以用 A 环境变量先启动,再修改后(别忘了 soruce ,或者直接 export )启动 B ,这时不影响已经启动的 A 。
    joyhub2140
        15
    joyhub2140  
       23 小时 15 分钟前
    @ZimaBlueee 是的,你可以开多几个容器分配不同的 gpu ,不过要注意端口冲突。
    magicZ
        16
    magicZ  
       23 小时 8 分钟前   ❤️ 1
    vim start_qwq.sh
    CUDA_VISIBLE_DEVICES="0" ./llama.cpp/build/bin/llama-server --model /data/models/qwq-32b/dir/qwq-32b-q4_k_m.gguf -ngl 100 -t 32 --host 0.0.0.0 --port 9000
    ZimaBlueee
        17
    ZimaBlueee  
    OP
       23 小时 4 分钟前
    谢谢各位的回复,答案基本有了:

    1. modelfile 文件需要自己手动编写,这对新手来说主要怕写的不好,怕漏东西或写的不完美。

    2. 用 server 启动时指定环境变量来指定 GPU ,或者开 2 个 docker 容器来指定。这里我选择了后者,开 2 个 docker 容器简单好维护。

    再次感谢各位的热心回答!
    xyfan
        18
    xyfan  
       22 小时 56 分钟前
    @b821025551b 至少在 win 系统上 ollama 是可以正常同时调用多显卡的,单卡 24G 显存,双卡就能跑 14B-PF16 (29G) 或 70B-Q4M (42G) 的模型
    hefish
        19
    hefish  
       18 小时 16 分钟前
    1 、huggingface 上有,下载了,然后可以导入到 ollama , 具体 ollama 有官方文档,很方便的。
    2 、vllm 支持指定显卡,ollama 好像不支持。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5594 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 01:36 · PVG 09:36 · LAX 18:36 · JFK 21:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.