ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

如何通过 reticulate 在 R 中调用 PaddlePaddle 推理引擎?

2026/9/13 13:03:21 拓冰建站 浏览量
如何通过 reticulate 在 R 中调用 PaddlePaddle 推理引擎? 如何通过 reticulate 在 R 中调用 PaddlePaddle 推理引擎【免费下载链接】PaddlePArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice 『飞桨』核心框架深度学习机器学习高性能单机、分布式训练和跨平台部署项目地址: https://gitcode.com/GitHub_Trending/pa/Paddle如果你需要在 R 项目中完成 PaddlePaddle 模型的推理PaddlePaddle 仓库提供了 R 集成方案通过 R 包reticulate从 R 调用 Python 环境再经由paddle.base.core使用 PaddlePaddle 推理引擎。该方案由仓库r/目录支撑包含中英文说明文档、Dockerfile和完整的 mobilenet R 推理示例。本文按“准备环境 → 编写推理代码 → 运行示例并验证结果”的顺序完成这个任务。环境准备两种安装方式官方文档给出两条环境准备路径构建 Docker 镜像文档 Quick start 路径和本地直接安装。两者都需要一个已安装 PaddlePaddle 的 Python 环境以及装有reticulate的 R 环境。方式一构建 Docker 镜像文档 Quick start 路径将 Dockerfile 和 example 下载到同一本地目录构建镜像docker build -t paddle-rapi:latest .创建并进入容器docker run --rm -it paddle-rapi:latest bashDockerfile 基于ubuntu:18.04构建过程会安装 PythonMiniconda位于/opt/python3、用 conda-forge 安装 R、用 pip 安装 PaddlePaddleCPU 版 whl、用Rscript安装reticulate并把 mobilenet 测试模型数据下载解压到example目录。注意构建和拉取过程包含多次网络下载Python 安装程序、pip 包、模型数据压缩包docker run的--rm参数表示容器退出后删除容器实例。方式二本地安装文档假设已安装 Python并以路径/opt/python3.8为例这是示例假设路径需替换为你机器上实际的 Python 路径python -m pip install paddlepaddle # CPU version python -m pip install paddlepaddle-gpu # GPU version然后安装 R 运行 Paddle 预测所需的库install.packages(reticulate) # call Python in R install.packages(RcppCNPy) # use numpy.ndarray in R在 R 中编写 PaddlePaddle 推理代码加载 Python 环境与 paddle 模块library(reticulate) library(RcppCNPy) use_python(/opt/python3.8/bin/python3.8) paddle - import(paddle.base.core)use_python的参数是 Python 解释器路径必须指向安装了 PaddlePaddle 的那个 Python文档中的/opt/python3.8是假设路径。paddle.base.core是文档中用于创建 PaddlePaddle 推理引擎的模块。创建并配置 AnalysisConfigAnalysisConfig是 PaddlePaddle 推理引擎的配置对象config - paddle$AnalysisConfig()设置模型路径。文档列出了两种模型文件形式及对应设置model目录中存在一个模型文件和多个参数文件config$set_model(model)model目录中存在一个模型文件__model__和一个参数文件__params__config$set_model(model/__model__, model/__params__)开启 zero copy 预测禁用 feed/fetch OPconfig$switch_use_feed_fetch_ops(FALSE) config$switch_specify_input_names(TRUE)文档还提供以下可选配置项可按需选用config$enable_profile() # turn on inference profile config$enable_use_gpu(gpu_memory_mb, gpu_id) # use GPU config$disable_gpu() # disable GPU config$gpu_device_id() # get GPU id config$switch_ir_optim(TRUE) # turn on IR optimize(default is TRUE) config$enable_tensorrt_engine(workspace_size, max_batch_size, min_subgraph_size, paddle$AnalysisConfig$Precision$FLOAT32, use_static, use_calib_mode ) # use TensorRT config$enable_mkldnn() # use MKLDNN config$delete_pass(pass_name) # delete IR pass创建 predictor、写入输入并运行创建推理引擎predictor - paddle$create_paddle_predictor(config)获取输入 tensor文档假设单输入并写入输入数据然后运行推理input_names - predictor$get_input_names() input_tensor - predictor$get_input_tensor(input_names[1]) input_shape - as.integer(c(1, 3, 300, 300)) # shape has integer type input_data - np_array(data, dtypefloat32)$reshape(input_shape) input_tensor$copy_from_cpu(input_data) predictor$zero_copy_run()这里有两个文档明确强调的约束shape 必须为整数类型as.integer输入数据要通过np_array包装成numpy.ndarray后交给copy_from_cpu。其中(1, 3, 300, 300)是文档以 mobilenet 为例给出的 shapedata为你自行准备的输入数据。获取输出文档假设单输出并转成 R 中可用的numpy.ndarrayoutput_names - predictor$get_output_names() output_tensor - predictor$get_output_tensor(output_names[1]) output_data - output_tensor$copy_to_cpu() output_data - np_array(output_data)运行官方 mobilenet 示例并核对结果仓库提供了完整的 R mobilenet 示例及对应的 Python 示例。R 脚本的实际内容创建AnalysisConfig设置模型路径为data/model/__model__与data/model/__params__并调用enable_profile()用np$loadtxt从data/data.txt读入输入数据reshape 为(1, 3, 300, 300)后写入输入 tensor执行zero_copy_run()读取输出 tensor同时从data/result.txt加载参考结果脚本中有一行被注释掉的#all.equal(output_data, result)——取消注释即可比对推理输出与参考结果是否一致这是文档给出的结果核对方式。如果采用 Docker 路径容器内已就位按文档命令执行cd example chmod x mobilenet.r ./mobilenet.r本地安装路径下可在 example 目录中直接用Rscript mobilenet.r运行脚本带#!/usr/bin/env Rscript头非交互模式下自动执行zero_copy_run_mobilenet()。运行前注意两点脚本中的use_python(/opt/python3.8/bin/python)需要改为你环境中实际安装了 PaddlePaddle 的 Python 路径data/model、data/data.txt、data/result.txt等文件需要相对于脚本所在位置存在Docker 镜像构建时已把模型数据下载解压到example目录。适用范围与限制文档中的推理流程均以“单输入、单输出”模型为前提原文注明 assume single input / assume single output示例代码只取input_names[1]和output_names[1]。模型路径设置只覆盖“一个模型文件 多个参数文件”和“__model____params__”两种文件形式导出模型时应使其对应其中之一。文档中的配置项TensorRT、MKLDNN、GPU 等在 R 侧仅以调用形式给出具体参数取值需按你使用的 PaddlePaddle 版本的推理引擎文档确定r/目录文档未展开说明。【免费下载链接】PaddlePArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice 『飞桨』核心框架深度学习机器学习高性能单机、分布式训练和跨平台部署项目地址: https://gitcode.com/GitHub_Trending/pa/Paddle创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考