ollama 新手,求问哥哥们 2 个问题,找了好多资料还是没弄明白 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ZimaBlueee
V2EX    Local LLM

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

  •  1
     
  •   ZimaBlueee 221 天前 2902 次点击
    这是一个创建于 221 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

    19 条回复    2025-03-11 15:20:29 +08:00
    iSkylar
        1
    iSkylar  
       221 天前   1
    1. Modelfile 自定义编写即可,你可以查看一下它的文本规范
    2. 查看显卡编号,然后通过使用环境变量指定 GPU 跑大模型,另外也可以选择 docker 容器来指定 GPU
    hcr707305003
        2
    hcr707305003  
       221 天前
    huggingface 上面不是有 modelfile 文件吗,可以参考
    ZimaBlueee
        3
    ZimaBlueee  
    OP
       221 天前
    @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  
       221 天前   1
    ollama show --modelfile modename 一下可以看到,modelfile 文件就是 ollama template +params 放在一起;
    一个 ollama 服务貌似只能一个显卡,倒是可以启动多个服务在不同端口上,每个服务用 CUDA_VISIBLE_DEVICES 指定不同显卡。
    ZimaBlueee
        5
    ZimaBlueee  
    OP
       221 天前
    @hcr707305003 很多模型找不到 modelfile ,比如这个: https://huggingface.co/Qwen/QwQ-32B
    iSkylar
        6
    iSkylar  
       221 天前   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
       221 天前
    @b821025551b 刚看了一下 ollama show --modelfile 还会额外补充信息,比我自己写的 modelfile 内容还要丰富很多
    op351
        8
    op351  
       221 天前
    Ollama 模型直接下载并手动安装的项目
    https://github.com/amirrezaDev1378/ollama-model-direct-download
    iSkylar
        9
    iSkylar  
       221 天前
    @ZimaBlueee
    3. 很多模型找不到 modelfile ,比如这个: https://huggingface.co/Qwen/QwQ-32B
    -从 Hugging Face 下载 GGUF 格式并手动创建 Modelfile
    ZimaBlueee
        10
    ZimaBlueee  
    OP
       221 天前
    @iSkylar 明白您的意思,但是环境变量不是只能设置一个嘛?如何在同一个 docker 容器内为 2 个大模型分配各自的显卡呢?

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

    2. docker 可以直接指定 gpu 编号给容器 如--gpus "device=0" 分配第一张卡。
    ZimaBlueee
        13
    ZimaBlueee  
    OP
       221 天前
    @joyhub2140 如果想分配另一张卡,是需要再开一个新的容器吗?
    b821025551b
        14
    b821025551b  
       221 天前
    @ZimaBlueee #7 你点开 ollama 官网的模型库,实际上就是 template 文件+params 文件+license 文件,把这几个文件下回来拼在一起就是 modelfile 文件; ollama 现在好像不支持启动时传参, 所以用 A 环境变量先启动,再修改后(别忘了 soruce ,或者直接 export )启动 B ,这时不影响已经启动的 A 。
    nxforce
        15
    nxforce  
       221 天前
    @ZimaBlueee 是的,你可以开多几个容器分配不同的 gpu ,不过要注意端口冲突。
    magicZ
        16
    magicZ  
       221 天前   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
       221 天前
    谢谢各位的回复,答案基本有了:

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

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

    再次感谢各位的热心回答!
    xyfan
        18
    xyfan  
       221 天前
    @b821025551b 至少在 win 系统上 ollama 是可以正常同时调用多显卡的,单卡 24G 显存,双卡就能跑 14B-PF16 (29G) 或 70B-Q4M (42G) 的模型
    hefish
        19
    hefish  
       221 天前
    1 、huggingface 上有,下载了,然后可以导入到 ollama , 具体 ollama 有官方文档,很方便的。
    2 、vllm 支持指定显卡,ollama 好像不支持。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     896 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 22:18 PVG 06:18 LAX 15:18 JFK 18:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86