【解决方案】使用transformer指定显卡后,模型依然加载到默认第1张显卡上
创始人
2024-11-15 04:02:29
0

问题描述

下面是这个问题的一个简化demo:

import torch from transformers import AutoTokenizer,AutoModelForCausalLM import os os.environ['CUDA_VISIBLE_DEVICES'] = '2,3'   model_path = "..."  model = AutoModelForCausalLM.from_pretrained(model_path,torch_dtype="auto",trust_remote_code=True,device_map="auto")  tokenizer =  AutoTokenizer.from_pretrained(model_path, trust_remote_code=True) 

按理说指定了环境变量为后面几张显卡,模型会自动加载到我们指定的显卡上。可是查看gpu使用情况,发现还是加载在了第一张显卡上,这是为啥呢?

原因及解决方案

参考这篇博客:【踩坑】PyTorch中指定GPU不生效和GPU编号不一致问题 ,发现如果在代码里指定CUDA_VISIBLE_DEVICES的话,指定的位置一定要在所有引用torch的代码之前。上面是单个文件的例子,如果是多个文件互相引用,也是一样的道理。所以推荐在脚本入口的一开始就设置该环境变量:

# 在入口文件的一开始设置该环境变量。原则是它的设置一定要早于所有模块对torch的引用 import os os.environ['CUDA_VISIBLE_DEVICES'] = '2,3'  import torch from transformers import AutoTokenizer,AutoModelForCausalLM   model_path = "..."  model = AutoModelForCausalLM.from_pretrained(model_path,torch_dtype="auto",trust_remote_code=True,device_map="auto")  tokenizer =  AutoTokenizer.from_pretrained(model_path, trust_remote_code=True) 

再查看显卡,模型会被自动加载到编号为2,3的两张显卡上。值得注意的是,若指定device_map = "auto",需要在环境中安装accelerate包。

相关内容

热门资讯

黑科技辅助挂“长春科乐天天踢辅... 黑科技辅助挂“长春科乐天天踢辅助”外挂透视辅助助手(确实真的是有挂)1、下载好长春科乐天天踢辅助辅助...
9分钟了解!中至吉安黑科技(辅... 9分钟了解!中至吉安黑科技(辅助挂)都是真的有挂(详细辅助存在挂教程)1、任何中至吉安黑科技ai辅助...
四分钟辅助挂!玩吧辅助工具(辅... 四分钟辅助挂!玩吧辅助工具(辅助挂)微扑克教程(确实是真的有挂)1)玩吧辅助工具辅助挂:进一步探索玩...
黑科技辅助“新圣游脚本下载”外... 黑科技辅助“新圣游脚本下载”外挂透视辅助下载(竟然真的是有挂)新圣游脚本下载辅助器中分为三种模型:新...
第5分钟辅助!海贝之城辅助器(... 第5分钟辅助!海贝之城辅助器(辅助挂)都是真的有挂(详细辅助曝光教程)1、海贝之城辅助器系统规律教程...
第六分钟透视!逍遥湖北微信辅助... 第六分钟透视!逍遥湖北微信辅助(辅助挂)力荐教程(一贯存在有挂)您好,逍遥湖北微信辅助,确实是有挂的...
2分钟辅助挂!心悦辅助(辅助挂... 2分钟辅助挂!心悦辅助(辅助挂)原来存在有挂(详细辅助必备教程)1、构建自己的心悦辅助辅助插件;2、...
黑科技辅助“中至余干510k挂... 黑科技辅助“中至余干510k挂机”外挂透视辅助器(竟然真的是有挂)1、任何中至余干510k挂机ai辅...
九分钟辅助挂!小程序微乐游戏辅... 九分钟辅助挂!小程序微乐游戏辅助器(辅助挂)玩家教程(原本有挂)小程序微乐游戏辅助器辅助器中分为三种...
第二分钟辅助挂!玩吧辅助脚本安... 第二分钟辅助挂!玩吧辅助脚本安卓版(辅助挂)原来真的是有挂(详细辅助必赢方法);在进入玩吧辅助脚本安...