news 2026/6/10 16:27:41

多GPU和单GPU运行llama的时间差

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多GPU和单GPU运行llama的时间差

在今天测试的时候,遇到了非常奇怪的问题。

之前的llama推理耗时40-50秒,而今晚的llama推理耗时580-590秒。

llama模型没变,adapter没变,代码没变,唯一的可能就是gpu。我只能怀疑是有什么进程在跑,和我抢占资源。

可是我不运行的时候,发现gpu几乎使用为0。也就说不太可能有其他人和我抢占资源。

我只能继续测试。

我开始运行llama。

实验室的server有4个24GB的gpu

nvidia-smi watch -n 1 nvidia-smi

情况大致如下:

可以看到显存的分布情况是四个GPU都有,并且都占很少的显存。

然后我们发送prompt给llama,此时算力出现变化。

可以看见,虽然分散了,但是llama还是只在其中一个上运行,其他全部都算力为0,而第一个gpu的算力是34%-45%之间跳动。

这个时候的生成耗时为580秒。非常离谱

llama推理时间很慢的情况,网上没找到解决方案(因为我都不知道这样的问题该怎么搜索,除了当事人谁™遇到过这种操蛋事情),大模型也是啥都不知道。

首先怀疑llama是不是跑到cpu运行了(虽然也不太可能,因为cpu90%多idle)。

def check_device(self): """检查模型实际运行在哪里""" import torch print("\n" + "="*60) print("🔍 设备检查") print("="*60) try: # 检查模型 model = self.chat_model.engine.model device = next(model.parameters()).device print(f"📍 模型在: {device}") if device.type == 'cpu': print("⚠️⚠️⚠️ 警告:模型在CPU上运行! ⚠️⚠️⚠️") else: print(f"✅ 模型在 GPU {device.index} 上") # 检查CUDA可用性 print(f"\n🎮 CUDA状态:") print(f" - CUDA可用: {torch.cuda.is_available()}") print(f" - CUDA版本: {torch.version.cuda}") print(f" - GPU数量: {torch.cuda.device_count()}") if torch.cuda.is_available(): for i in range(torch.cuda.device_count()): print(f" - GPU {i}: {torch.cuda.get_device_name(i)}") print(f" 已用内存: {torch.cuda.memory_allocated(i)/1e9:.2f}GB") except Exception as e: print(f"❌ 检查失败: {e}") print("="*60 + "\n")

这个代码用来检测llama运行时的模型位置检测,并将这个测试代码的调用放在模型构建后。

self.chat_model = ChatModel(args) print("✅ 模型加载完成!\n") self.check_device() # 添加这行

结果如下。

- GPU 0: NVIDIA GeForce RTX 4090 已用内存: 3.27GB - GPU 1: NVIDIA GeForce RTX 4090 已用内存: 4.42GB - GPU 2: NVIDIA GeForce RTX 4090 已用内存: 4.42GB - GPU 3: NVIDIA GeForce RTX 4090 已用内存: 3.09GB

可以看到llama确实运行在gpu上,所以cpu猜想错误。

发给大模型,它认为可能是llama分散使用gpu导致运行效率低下。

于是想尝试之前学到的一个指令:

CUDA_VISIBLE_DEVICES

这个指令是能够直接屏蔽程序发现其他gpu,完全契合visble这个单词。

我输入指令

CUDA_VISIBLE_DEVICES=1 python /root/llama_fine/llama_server.py

当我使用了这个visible的时候,我发现cuda的时候情况变得很不一样。

部分cuda的分布直接快接近0了。

而当我发送prompt给llama时,算力的变化尤其大。

cuda 1的算力快被拉满了。 这是什么,这是希望啊卧槽。

因为算力才是影响快慢的关键,我直到现在也搞不清楚这太服务器的进程数量到底是如何影响算力的。明明cpu22核,为什么开16个进程的时候算力最高就30%的使用率了。这个90%多的算力使用率意味着——

同一个模型,同一个代码,同一个adapter,同一个prompt,运行时间天差地别。

比我之前40-50秒还快。

难道因为当时gpu都有人用,所以llama不得不集中在某几个cuda上,而现在没人和我抢,所以才快?

不理解。

这玩意也没有人开课,大模型也不懂,纯靠人工一个个试出来。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 15:51:50

OpenBoardView:免费开源电路板查看器的完整使用指南

OpenBoardView:免费开源电路板查看器的完整使用指南 【免费下载链接】OpenBoardView View .brd files 项目地址: https://gitcode.com/gh_mirrors/op/OpenBoardView 在电子设计领域,专业的电路板查看工具往往是昂贵的商业软件。OpenBoardView作为…

作者头像 李华
网站建设 2026/6/10 14:24:24

Qwen3-VL摩托车压弯技巧:倾斜角度与速度匹配

Qwen3-VL摩托车压弯技巧:倾斜角度与速度匹配 在专业摩托车赛事中,一个细微的压弯失误就可能导致车手冲出赛道。经验丰富的骑手依靠肌肉记忆和直觉判断“多快能过这个弯”,但普通人如何掌握这种高阶技能?如今,借助像Qwe…

作者头像 李华
网站建设 2026/6/10 15:38:14

哔哩哔哩直播推流码获取与OBS配置完全指南

哔哩哔哩直播推流码获取与OBS配置完全指南 【免费下载链接】bilibili_live_stream_code 用于在准备直播时获取第三方推流码,以便可以绕开哔哩哔哩直播姬,直接在如OBS等软件中进行直播,软件同时提供定义直播分区和标题功能 项目地址: https:…

作者头像 李华
网站建设 2026/6/10 14:23:26

Vim插件管理革命:VAM让插件管理变得简单高效

Vim插件管理革命:VAM让插件管理变得简单高效 【免费下载链接】vim-addon-manager manage and install vim plugins (including their dependencies) in a sane way. If you have any trouble contact me. Usually I reply within 24 hours 项目地址: https://gitc…

作者头像 李华
网站建设 2026/6/10 15:38:11

Universal Control Remapper实战宝典:从设备控制小白到定制达人

还在为游戏操作不顺手而烦恼?想要个性化定制键盘鼠标功能却不懂编程?Universal Control Remapper这款开源工具正是为你量身打造的终极解决方案。今天,我们将带你从零开始,用最接地气的方式掌握这个强大的设备控制重映射神器&#…

作者头像 李华
网站建设 2026/5/23 0:43:35

脆骨症模组包:重塑Minecraft生物解剖体验

脆骨症模组包:重塑Minecraft生物解剖体验 【免费下载链接】No-Flesh-Within-Chest A modpack based on chest cavity mod. 项目地址: https://gitcode.com/gh_mirrors/no/No-Flesh-Within-Chest 创作理念与设计哲学 在Minecraft的广阔世界中,脆骨…

作者头像 李华