我的服务器是内网,所以只能手动导入从其他地方下载的模型,然后导入到服务器中。
这个时候就出现一个问题:如果直接从 ollama 下载镜像,会顺带下载 modelfile 文件。
而我模型是自己导入的,每个大模型的 modelfile 文件都不一样,请问有什么单独获取 modelfile 的途径嘛?
我的服务器有 2 块显卡,现在希望每块显卡都跑一个不同的大模型。
比如,我想让第一块显卡跑 qwen 大模型;第二块显卡跑 deepseek 。怎么如何指定呢?
![]() |
1
iSkylar 23 小时 54 分钟前 ![]() 1. Modelfile 自定义编写即可,你可以查看一下它的文本规范
2. 查看显卡编号,然后通过使用环境变量指定 GPU 跑大模型,另外也可以选择 docker 容器来指定 GPU |
![]() |
2
hcr707305003 23 小时 52 分钟前
huggingface 上面不是有 modelfile 文件吗,可以参考
|
![]() |
3
ZimaBlueee OP @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 编号嘛? |
![]() |
4
b821025551b 23 小时 46 分钟前 ![]() ollama show --modelfile modename 一下可以看到,modelfile 文件就是 ollama template +params 放在一起;
一个 ollama 服务貌似只能一个显卡,倒是可以启动多个服务在不同端口上,每个服务用 CUDA_VISIBLE_DEVICES 指定不同显卡。 |
![]() |
5
ZimaBlueee OP @hcr707305003 很多模型找不到 modelfile ,比如这个: https://huggingface.co/Qwen/QwQ-32B
|
![]() |
6
iSkylar 23 小时 39 分钟前 ![]() @ZimaBlueee
1. 里我需要把 1 改成 all 吗?改成 all 的话,还能使用环境变量指定 GPU 嘛? - 基于 docker 配置 device_ids: ["all"],然后也可以通过环境配置来指定 GPU ,再 env 那里配置,例如 CUDA_VISIBLE_DEVICES=1 2. 在 modelfile 里指定 GPU 编号嘛? - 不行,Modelfile 是 Ollama 用来定义模型配置的文件(例如模型路径、参数、提示词等),但它无法直接控制 GPU 分配,GPU 分配是由运行时环境( Docker 或系统)决定的。 |
![]() |
7
ZimaBlueee OP @b821025551b 刚看了一下 ollama show --modelfile 还会额外补充信息,比我自己写的 modelfile 内容还要丰富很多
|
![]() |
8
op351 23 小时 37 分钟前
Ollama 模型直接下载并手动安装的项目
https://github.com/amirrezaDev1378/ollama-model-direct-download |
![]() |
9
iSkylar 23 小时 36 分钟前
@ZimaBlueee
3. 很多模型找不到 modelfile ,比如这个: https://huggingface.co/Qwen/QwQ-32B -从 Hugging Face 下载 GGUF 格式并手动创建 Modelfile |
![]() |
10
ZimaBlueee OP @iSkylar 明白您的意思,但是环境变量不是只能设置一个嘛?如何在同一个 docker 容器内为 2 个大模型分配各自的显卡呢?
请问是这样操作吗:我部署 A 模型时,先把 CUDA_VISIBLE_DEVICES=0 ;部署 B 模型时,再把 CUDA_VISIBLE_DEVICES=1 。这样不会改变 A 模型的运行显卡吧? |
![]() |
11
ZztGqk 23 小时 30 分钟前 via iPhone ![]() 走环境变量,就楼上老哥给的 CUDA_VISIBLE…,不想用 docker 可以直接用 serve ,别用 run 就行,把用 run 开的 service 关掉。用 serve 在 linux 上需要手动指定下模型位置,同时配合环境变量和指定不同的端口就可以多卡了。确实难用…
|
![]() |
12
joyhub2140 23 小时 24 分钟前 ![]() 1. ollama 没研究过本地权重文件加载,但 vllm 我知道是可以直接加载本地模型文件的,不用走下载。
2. docker 可以直接指定 gpu 编号给容器 如--gpus "device=0" 分配第一张卡。 |
![]() |
13
ZimaBlueee OP @joyhub2140 如果想分配另一张卡,是需要再开一个新的容器吗?
|
![]() |
14
b821025551b 23 小时 21 分钟前
@ZimaBlueee #7 你点开 ollama 官网的模型库,实际上就是 template 文件+params 文件+license 文件,把这几个文件下回来拼在一起就是 modelfile 文件; ollama 现在好像不支持启动时传参, 所以用 A 环境变量先启动,再修改后(别忘了 soruce ,或者直接 export )启动 B ,这时不影响已经启动的 A 。
|
![]() |
15
joyhub2140 23 小时 15 分钟前
@ZimaBlueee 是的,你可以开多几个容器分配不同的 gpu ,不过要注意端口冲突。
|
![]() |
16
magicZ 23 小时 8 分钟前 ![]() 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 |
![]() |
17
ZimaBlueee OP 谢谢各位的回复,答案基本有了:
1. modelfile 文件需要自己手动编写,这对新手来说主要怕写的不好,怕漏东西或写的不完美。 2. 用 server 启动时指定环境变量来指定 GPU ,或者开 2 个 docker 容器来指定。这里我选择了后者,开 2 个 docker 容器简单好维护。 再次感谢各位的热心回答! |
![]() |
18
xyfan 22 小时 56 分钟前
@b821025551b 至少在 win 系统上 ollama 是可以正常同时调用多显卡的,单卡 24G 显存,双卡就能跑 14B-PF16 (29G) 或 70B-Q4M (42G) 的模型
|
19
hefish 18 小时 16 分钟前
1 、huggingface 上有,下载了,然后可以导入到 ollama , 具体 ollama 有官方文档,很方便的。
2 、vllm 支持指定显卡,ollama 好像不支持。 |