pytorch 使用 apex问题

1. apex 使用出问题:

RuntimeError: CUDA error: an illegal memory access was encountered
terminate called after throwing an instance of 'c10::Error'
  what():  CUDA error: an illegal memory access was encountered (insert_events at /pytorch/c10/cuda/CUDACachingAllocator.cpp:569)

解决办法:

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print(device)
torch.cuda.set_device(device)  # 添加这一行 

2.

Incoming model is an instance of torch.nn.parallel.DataParallel. Parallel wrappers should only be applied to the model(s) AFTER  the model(s) have been returned from amp.initialize.

解决办法:在amp.initialize()之后调用分布式代码 DistributedDataParallel

model, optimizer = amp.initialize(model_quest_bert_LSTM.to(device), optimizer, opt_level="O1")  # O1 O2 # 欧一,  不是 零一

        if torch.cuda.device_count() > 1:  # 使用多GPU
            print("Let's use", torch.cuda.device_count(), "GPUs!")
            # model = nn.DataParallel(model_quest_bert_LSTM)

            # model_quest_bert_LSTM = model_quest_bert_LSTM.cuda(device)  # cuda(device)
            model = nn.parallel.DistributedDataParallel(model, find_unused_parameters=True)  # 分布是训练.

3. 学习使用apex

PyTorch必备神器 | 唯快不破:基于Apex的混合精度加速

一文详解Apex的安装和使用教程(一款基于 PyTorch 的混合精度训练加速神器)

4. amp.initialize只能调用一次

model, optim = amp.initialize(model, optim,...)
model, [optim0, optim1] = amp.initialize(model, [optim0, optim1],...)
[model0, model1], optim = amp.initialize([model0, model1], optim,...)
[model0, model1], [optim0, optim1] = amp.initialize([model0, model1], [optim0, optim1],...)

链接

5. LSTM使用问题

RNN module weights are not part of single contiguous chunk of memory. This means they need to be compacted at every call, possibly greatly increasing memory usage. To compact weights again call flatten_parameters().

在调用LSTM之前,使用:

self.lstm.flatten_parameters()  # ?
output, _ = self.lstm(sequence_output)

 

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
安装Apex可以按照以下步骤进行操作: 1. 首先,确保你已经成功安装了PyTorch。你可以使用以下代码来测试PyTorch是否安装成功并显示版本信息: ```python import torch print(torch.version.cuda) print(torch.__version__) print(torch.cuda.is_available()) ``` 2. 下载Apex的源代码。你可以在GitHub上找到Apex的仓库:https://github.com/NVIDIA/apex 3. 打开命令行窗口,并切换到Apex所在的文件夹。 4. 使用以下命令来安装Apex: ```python python setup.py install ``` 如果你使用的是conda虚拟环境,并且在切换目录后遇到了Python路径问题,你可以使用虚拟环境中Python的绝对路径来执行安装命令,例如: ```python /home/test/anaconda/envs/bwh/bin/python3.8 setup.py install ``` 5. 安装完成后,你就可以在你的代码中使用Apex进行混合精度训练了。 请注意,以上是一般的安装流程,如果你遇到了问题,你可以参考Apex的官方文档或者其他资源中提供的解决方案。 #### 引用[.reference_title] - *1* [conda创建虚拟环境安装opencv、pytorchapex](https://blog.csdn.net/qq_37748910/article/details/124726968)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [一文详解Apex的安装和使用教程(一款基于 PyTorch 的混合精度训练加速神器)](https://blog.csdn.net/mrjkzhangma/article/details/100704397)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Pytorch 安装 APEX 问题解决方案](https://blog.csdn.net/qq_40071917/article/details/121602728)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值