当前位置: 首页 > web >正文

llama factory 命令行推理流程

错误:RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!
原因:参与运算的两个或多个变量,有的在CPU上,有的在GPU上

解决:

首先找到报错的行,看看计算时都用到哪些变量或者数据,然后在调试模式下使用.is_cuda这个属性去查看到底哪些是在GPU上,哪些是在CPU上,然后把它们统一都放在CPU,或者统一放在GPU上就可以。

1. ​​强制统一设备(推荐)​​
​​修改文件​​:modeling_qwen2_vl.py
​​修改内容​​:

python
# 原代码
delta = cache_position[0] + self.rope_deltas if cache_position is not None else 0

# 修改后
delta = (cache_position[0].to(self.rope_deltas.device) + self.rope_deltas) if cache_position is not None else 0
​​作用​​:
将 cache_position[0] 显式移动到与 self.rope_deltas 相同的设备(cuda:0)37。

2. ​​模型初始化修正​​
​​修改文件​​:模型定义部分(如 __init__ 方法)
​​修改内容​​:

python
# 原代码可能未指定设备
self.rope_deltas = torch.tensor(...)  # 默认可能在CPU或错误GPU

# 修改后(添加设备指定)
self.rope_deltas = torch.tensor(...).to(device)  # device需从外部传入
​​调用位置​​:
在模型实例化时传递设备参数:

python
model = QWen2VLModel(config).to(device)  # device需提前定义

=

http://www.xdnf.cn/news/2192.html

相关文章:

  • MUC基本知识
  • 电子电器架构 --- 乘用车电气/电子架构开发的关键挑战与应对策略
  • Shell编程之正则表达式
  • c++弹窗
  • threejs 零基础学习day01
  • 【补题】Codeforces Global Round 20 F1. Array Shuffling
  • Python循环中断:break和continue,循环else语法,综合案例
  • 一、人类社会结构的根本逻辑
  • Cribl 上传lookup 表,传入数据进event
  • 计算机网络的五层结构(物理层、数据链路层、网络层、传输层、应用层)到底是什么?
  • 揭开人工智能的神秘面纱:从概念到人工神经网络
  • Spring和Spring Boot集成MyBatis的完整对比示例,包含从项目创建到测试的全流程代码
  • 数据库系统概论(四)关系操作,关系完整性与关系代数
  • springboot集成MyBatis Generator快速开发
  • Pygame跨平台打包:将游戏发布到Windows、Mac和Linux
  • 当JIT遇见K8s
  • 如何下载VSCode插件市场为VSIX文件
  • 在Mybatis中为什么要同时指定扫描mapper接口和 mapper.xml 文件,理论单独扫描 xml 文件就可以啊
  • Maven进阶知识
  • 【TypeScript】速通篇
  • 打破云墙:多云环境中的DevOps实践指南
  • 5.3/Q1,GBD数据库最新文章解读
  • 【Java面试笔记:进阶】22.AtomicInteger底层实现原理是什么?如何在自己的产品代码中应用CAS操作?
  • QQMusic项目功能总结
  • openEuler对比CentOS的核心优势分析
  • Web端ER可视化
  • 部署大模型需要多少GPU显存?以DeepSeek R1部署为例
  • MongoDB Atlas与MongoDB连接MCP服务器的区别解析
  • SpringBoot物资管理系统 | JavaWeb项目设计与实现
  • 山东大学离散数学第九章习题解析