Caffe2 - (六)CPU/GPU 模式切换

本文介绍如何在Caffe2中实现CPU与GPU模式的切换,通过修改设备选项来适应不同硬件环境,确保模型顺利运行。文章提供了一段示例代码,详细展示了初始化模型、设置设备选项、加载模型和参数、运行网络等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Caffe2 - CPU/GPU 部署模式切换

在尝试把 Caffe 模型转换到 Caffe2,部署时 CPU/GPU 模式切换方法找了很久才找到一个用着可以,记录下.

import sys
sys.path.insert(0, '/path/to/caffe2/build')
from caffe2.python import core, workspace, model_helper
from caffe2.proto import caffe2_pb2, caffe2_legacy_pb2

# -------- CPU/GPU 模式切换 -----
workspace.ResetWorkspace()
# device_opts = core.DeviceOption(caffe2_pb2.CPU, 0) # CPU 模式
device_opts = core.DeviceOption(caffe2_pb2.CUDA, 0) # GPU 模式,及 gpuid


# -------- 加载模型和参数 ------------
INIT_NET = 'init_net.pb'
PREDICT_NET = 'predict_net.pb'

init_def = caffe2_pb2.NetDef()
with open(INIT_NET, 'rb') as f:
    init_def.ParseFromString(f.read())
    init_def.device_option.CopyFrom(device_opts)
    workspace.RunNetOnce(init_def.SerializeToString())

net_def = caffe2_pb2.NetDef()
with open(PREDICT_NET, 'rb') as f:
    net_def.ParseFromString(f.read())
    net_def.device_option.CopyFrom(device_opts)
    workspace.CreateNet(net_def.SerializeToString())

name = net_def.name
output_name = net_def.external_output[-1] # 输出 blob 名
input_name = net_def.external_input[0] # 输入 blob 名

# -------- 送入数据 blob -----------
input_data = np.random.rand(2, 3, 227, 227).astype(np.float32) # NCHW
workspace.FeedBlob(input_name, input_data, device_opts) # device_opts:CPU/GPU 模式的选项

# -------- Forward ----------------
workspace.RunNet(name, 1)

# --------- 读取网络计算结果 --------
results = workspace.FetchBlob(output_name)
### 安装 Caffe-GPU 的准备工作 为了在 Ubuntu 20.04 上顺利安装 Caffe-GPU 版本,建议先确保系统的软件包是最新的。这可以通过运行以下命令来实现: ```bash sudo apt-get update && sudo apt-get upgrade -y ``` 此操作可以保证后续依赖项不会因为版本冲突而出现问题[^2]。 ### 安装必要的依赖库 接着需要安装一系列编译工具以及依赖库,这些对于构建和优化 Caffe 是必需的。具体来说,应该执行如下指令: ```bash sudo apt-get install build-essential cmake git pkg-config libatlas-base-dev \ libboost-all-dev libgflags-dev libgoogle-glog-dev libhdf5-serial-dev libleveldb-dev \ liblmdb-dev libopencv-dev libprotobuf-dev protobuf-compiler python3-pip python3-dev \ python3-numpy python3-scipy python3-matplotlib ipython3 htop vim curl wget unzip ``` 上述命令会安装大部分所需的开发工具与库文件,为之后的成功编译打下基础。 ### 配置 NVIDIA CUDA 和 cuDNN 由于选择了 GPU 加速的支持,因此还需要配置好 NVIDIA 提供的相关驱动程序及其配套组件 CUDA Toolkit 及 cuDNN SDK。一种简便的方法是利用 Docker 来获取预配置好的环境;另一种则是手动下载并按照官方文档指示完成设置。如果选择后者,则可以从[NVIDIA官方网站](https://developer.nvidia.com/)找到对应版本的CUDA和cuDNN进行本地化部署[^3]。 ### 获取源码并编译 当所有前置条件都已满足后,就可以从 GitHub 克隆最新的 Caffe 源代码仓库,并切换到适合自己的分支(如 `ssd`),再进入该目录准备下一步的操作: ```bash git clone https://github.com/weiliu89/caffe.git -b ssd && cd caffe ``` 随后根据个人需求调整 Makefile.config 文件中的选项,特别是关于是否开启 CPU_ONLY 支持的部分应设为 false 并确认其他参数无误后再继续。最后启动实际的编译过程: ```bash cp Makefile.config.example Makefile.config # 编辑Makefile.config... make all -j$(nproc) make test -j$(nproc) make runtest -j$(nproc) ``` 以上步骤完成后即代表已经成功完成了 Caffe-GPU 在 Ubuntu 20.04 中的手动安装流程[^5]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值