Faster Transformer编译 使用

docker安装

  1. 设置REPOSITORY
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装指定版本docker-ce
sudo yum install docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io
systemctl daemon-reload
sudo service docker restart
  1. 安装nvidia-docker2
yum install nvidia-docker2
  1. 安装指定配置docker
docker pull nvcr.io/nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04

官方文档 https://docs.docker.com/install/linux/docker-ce/centos/
https://ngc.nvidia.com/catalog/containers/nvidia:cuda

  1. 编译遇到的问题
    环境:

    cmake version 3.15.0
    gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
    cuda 10.0
    cudnn 7
    Tensorflow-gpu 1.13.1
    tesla V100
    

    我的编译指令

    cmake -DSM=70 -DCMAKE_BUILD_TYPE=Release -DBUILD_TF=ON -DTF_PATH=/usr/lib/python2.7/site-packages/tensorflow ..
    
    

    报错:

    CMakeFiles/gemm_fp32.dir/gemm_fp32.cu.o: In function __sti____cudaRegisterAll()': tmpxft_0000054d_00000000-5_gemm_fp32.cudafe1.cpp:(.text.startup+0x15): undefined reference to __cudaRegisterLinkedBinary_44_tmpxft_0000054d_00000000_6_gemm_fp32_cpp1_ii_5cd8620e'
    collect2: error: ld returned 1 exit status
    tools/gemm_test/CMakeFiles/gemm_fp32.dir/build.make:83: recipe for target 'bin/gemm_fp32' failed
    
    

    解决办法:

    以下CmakeList文件末尾分别加入:
    tools/gemm_test/CMakeLists.txt

    set_target_properties(gemm_fp32 PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON)
    set_target_properties(gemm_fp16 PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON)
    

    fastertransformer/cuda/CMakeLists.txt

    set_target_properties(fastertransformer PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON)
    

    fastertransformer/tf_op/CMakeLists.txt

    set_target_properties(tf_fastertransformer PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON)
    

    报错:

    /data/app/DeepLearningExamples/FasterTransformer/fastertransformer/common.h:76:11: error: ‘runtime_error’ is not a member of ‘std’
     throw std::runtime_error(std::string("[FT][ERROR] CUDA runtime error: ") + \
    

    解决办法:

    //加头文件
    #include <stdexcept>
    
  2. 应用到bert中
    生成配置文件gemm_config.in

    ./build/bin/gemm_fp16(32) <batch_size> <seq_len> <head_num> <size_per_head>
    

    修改modeling.py文件

    #加载so文件
    transformer_op_module = tf.load_op_library("/data/app/DeepLearningExamples/FasterTransformer/build/lib/libtf_fastertransformer.so")
    
    #transformer_model中相应地方加入代码
      layer_output = dropout(layer_output, hidden_dropout_prob)
      layer_output = layer_norm(layer_output + attention_output)
      # calling faster transformer op
      trainable_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope=tf.get_variable_scope().name)
      layer_output = transformer_op_module.bert_transformer(
        layer_input,
        layer_input,
        trainable_vars[0], trainable_vars[2], trainable_vars[4], trainable_vars[1], trainable_vars[3], trainable_vars[5],
        attention_mask,
        trainable_vars[6], trainable_vars[7], trainable_vars[8], trainable_vars[9], trainable_vars[10], trainable_vars[11],
        trainable_vars[12], trainable_vars[13], trainable_vars[14], trainable_vars[15],
        batch_size=64, from_seq_len=seq_length, to_seq_len=seq_length, head_num=num_attention_heads, size_per_head=attention_head_size)
      prev_output = layer_output
      all_layer_outputs.append(layer_output)
    
    
    
    
    
    
    
    

    注意:
    1.bert-as-service不支持,因为bert-as-service必须是python3,fastertransformer必须是python2.7
    2.支持预测,但是训练不行,我测试是这样

### 使用 MMDetection 框架进行物体检测 #### 安装环境准备 为了能够顺利运行 MMDetection,需要准备好相应的开发环境。这通常涉及到 Python 版本的选择以及依赖库的安装。推荐使用 Anaconda 来管理虚拟环境,这样可以更方便地处理不同项目之间的包冲突问题[^1]。 ```bash conda create -n openmmlab python=3.8 -y conda activate openmmlab ``` 接着按照官方文档中的指导完成 PyTorch 及其扩展 CUDA 工具链的配置,确保 GPU 加速功能可用。 #### 下载并设置 MMDetection 获取最新版本的 MMDetection 仓库后,依据说明编译必要的 C++ 和 CUDA 扩展模块: ```bash git clone https://github.com/open-mmlab/mmdetection.git cd mmdetection pip install -r requirements/build.txt pip install -v -e . ``` 上述命令会下载源码并且将其作为可编辑模式安装到当前环境中,使得任何本地修改都能即时生效而无需重新打包发布。 #### 准备数据集 对于大多数预训练模型而言,默认支持 COCO 或 Pascal VOC 等标准格式的数据集。如果打算采用其他自定义格式,则需参照模板调整标注文件结构以便于后续加载器读取。这里以 COCO 数据集为例展示基本流程: - 解压原始图片压缩包至指定路径; - 将 JSON 类型的实例分割描述放置在同一目录下; - 修改 `configs/default_runtime.py` 中关于 dataset 的设定项指向实际存储位置; #### 配置文件解读与定制化 MMDetection 提供了大量的基础架构和算法实现,通过 YAML/Python 样式的配置脚本来控制具体的实验参数。用户可以根据需求挑选合适的 backbone (如 ResNet, Swin Transformer),neck 组件(FPN), head 结构(RetinaHead)等构建完整的探测流水线。 例如,在 `configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py` 文件里定义了一个基于 Faster R-CNN 架构的经典两阶段目标识别方案。可以通过继承此模板来创建新的配置文件,并针对特定应用场景做适当简化或增强操作。 #### 训练过程概览 启动训练之前建议先验证单步前向传播是否正常工作(`tools/misc/check_dataset.py`),确认无误后再执行正式迭代优化程序。下面给出了一条简单的调用指令用于启动多卡分布式训练作业: ```bash python tools/train.py configs/my_custom_config.py --gpus 4 ``` 该命令指定了要使用的GPU数量及对应的配置文件名。整个过程中日志会被记录下来帮助监控进度状况,同时 TensorBoard 插件也集成进来便于可视化分析损失变化趋势和其他重要指标表现。 #### 测试评估性能 当一轮或多轮次训练完成后,可通过如下方式快速获得最佳权重保存点上的预测精度统计报告: ```bash python tools/test.py configs/my_custom_config.py work_dirs/my_custom_exp/latest.pth --eval bbox segm ``` 这条语句告诉系统利用已有的 checkpoint 对测试集合实施推理计算,并输出 bounding box 和 mask IoU 值给定类别下的平均得分情况。除此之外还允许导出详细的分类错误案例图像辅助进一步诊断改进方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值