Maskrcnn/Faster-rcnn安装过程中使用高版本torch

本项目是作者在安装Maskrcnn/Faster-rcnn时使用高版本torch 遇到的THC.h的错误总结

问题:THC相关的包很多都在pytorch更新的过程中被抛弃了,导致很多.cu文件在安装依赖项时出现了不匹配的问题

fatal error: THC/THC.h: No such file or directory

在/maskrcnn_benchmark/csrc/cuda文件夹中的所有以.cu结尾的代码文件中删除了下述头文件:

#include <THC/THC.h>

并且把所有的:

THCudaCheck(cudaGetLastError());

替换成:

AT_CUDA_CHECK(cudaGetLastError());

“THCudaCheck“ is undefined

将所有文件中的:

THCudaCheck

替换成 

C10_CUDA_CHECK

"THCCeilDiv" is undefined

将所有文件中的:

THCCeilDiv

替换成:

std::min

例如:

dim3 grid(std::min(THCCeilDiv(output_size, 512L), 4096L));
替换
dim3 grid(std::min(((int)(output_size) + 512 -1) / 512, 4096));

THCudaMalloc、THCudaFree THCState undefined

在更新过程中pytorch不再需要malloc和free,也自然不需要state用于帮助申请空间

在使用THCudaMalloc、THCudaFree THCState的文件中添加头文件:

#include <ATen/cuda/ThrustAllocator.h>

注释掉THCState:

THCState *state = at::globalContext().lazyInitCUDA();

THCudaMalloc按照下文的形式修改

//mask_dev = (unsigned long long*) THCudaMalloc(state, boxes_num * col_blocks * sizeof(unsigned long long));
mask_dev = (unsigned long long*) c10::cuda::CUDACachingAllocator::raw_alloc(boxes_num * col_blocks * sizeof(unsigned long long));

THCudaFree的替换方式:

// THCudaFree(state, mask_dev);
c10::cuda::CUDACachingAllocator::raw_delete(mask_dev);

module ‘torch._six‘ has no attribute ‘PY3‘

找到保存文件

maskrcnn_benchmark\utils\imports.py

查看确定导入了PY3

找到site-packages\torch\_six.py文件 ( 是你调用的torch )

将下述代码替换掉之前的代码

import math
import sys
 
inf = math.inf
nan = math.nan
string_classes = (str, bytes)
PY37 = sys.version_info[0] == 3 and sys.version_info[1] >= 7

至此,我的问题已经解决,如果你的问题还没有解决,可以通过减低torch版本来处理


本文是通过从网上搜索多个博客拼接而成,在此感谢:

Maskrcnn/Faster-rcnn依赖项安装过程中THC.h: No such file or directory/THCeilDiv Undefined/分配内存空间等问题的解决方案-优快云博客

identifier “THCudaCheck“ is undefined 的解决方法-优快云博客

[问题解决]module ‘torch._six‘ has no attribute ‘PY3‘_attributeerror: module 'torch._six' has no attribu-优快云博客

提供的相应工作!

### 大模型对齐微调DPO方法详解 #### DPO简介 直接偏好优化(Direct Preference Optimization, DPO)是一种用于改进大型语言模型行为的技术,该技术通过结合奖励模型训练和强化学习来提升训练效率与稳定性[^1]。 #### 实现机制 DPO的核心在于它能够依据人类反馈调整模型输出的概率分布。具体来说,当给定一对候选响应时,DPO试图使更受偏好的那个选项具有更高的生成概率。这种方法不仅简化了传统强化学习所需的复杂环境设置,而且显著增强了模型对于多样化指令的理解能力和执行精度[^2]。 #### PAI平台上的实践指南 为了便于开发者实施这一先进理念,在PAI-QuickStart框架下提供了详尽的操作手册。这份文档覆盖了从环境配置直至完成整个微调流程所需的一切细节,包括但不限于数据准备、参数设定以及性能评估等方面的内容。尤其值得注意的是,针对阿里云最新发布的开源LLM——Qwen2系列,文中给出了具体的实例说明,使得即使是初次接触此类工作的用户也能顺利上手。 ```python from transformers import AutoModelForCausalLM, Trainer, TrainingArguments model_name_or_path = "qwen-model-name" tokenizer_name = model_name_or_path training_args = TrainingArguments( output_dir="./results", per_device_train_batch_size=8, num_train_epochs=3, ) trainer = Trainer( model_init=lambda: AutoModelForCausalLM.from_pretrained(model_name_or_path), args=training_args, train_dataset=train_dataset, ) # 假设已经定义好了train_dataset trainer.train() ``` 这段代码片段展示了如何使用Hugging Face库加载预训练模型并对其进行微调的过程。虽然这里展示的例子并不完全对应于DPO的具体实现方式,但它提供了一个基础模板供进一步定制化开发之用[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值