Java API-PaddlePaddle深度学习平台
\u200E
MobileConfig¶
import com.baidu.paddle.lite.MobileConfig;
public class MobileConfig extends ConfigBase;
MobileConfig 用来配置构建轻量级 PaddlePredictor 的配置信息,如 NaiveBuffer 格式的模型地址、能耗模式、工作线程数等等。
注意:输入的模型需要使用 Model Optimize Tool 转化为 NaiveBuffer 格式的优化模型。
示例:
MobileConfig config = new MobileConfig(); // 设置 NaiveBuffer 格式模型目录 config.setModelFromFile(modelfile); // 设置能耗模式 config.setPowerMode(PowerMode.LITE_POWER_HIGH); // 设置工作线程数 config.setThreads(1); // 根据 MobileConfig 创建 PaddlePredictor PaddlePredictor predictor = PaddlePredictor.createPaddlePredictor(config);
setPowerMode¶
void void setPowerMode(PowerMode mode);
设置 CPU 能耗模式。若不设置,则默认使用 LITE_POWER_HIGH。
注意:只在开启 OpenMP 时生效,否则系统自动调度。
参数
PowerMode: CPU 能耗模式。
PaddlePredictor¶
import com.baidu.paddle.lite.PaddlePredictor;
public class PaddlePredictor;
PaddlePredictor 是 Paddle Lite 的预测器。用户可以根据 PaddlePredictor 提供的接口使用 MobileConfig 创建新的预测器、设置输入数据、执行模型预测、获取输出以及获得当前使用 lib 的版本信息等。
示例:
// 设置 MobileConfig MobileConfig config = new MobileConfig(); config.setModelDir(modelPath); // 创建 PaddlePredictor PaddlePredictor predictor = PaddlePredictor.createPaddlePredictor(config); // 设置输入数据 long[] dims = {100, 100}; float[] inputBuffer = new float[10000]; for (int i = 0; i < 10000; ++i) { inputBuffer[i] = i; } Tensor input = predictor.getInput(0); input.resize(dims); input.setData(inputBuffer); // 执行预测 predictor.run(); // 获取输出数据 Tensor output = predictor.getOutput(0); float[] output = result.getFloatData(); for (int i = 0; i < 1000; ++i) { System.out.println(output[i]); }
CreatePaddlePredictor¶
public static PaddlePredictor createPaddlePredictor(ConfigBase config);
CreatePaddlePredictor 用来根据 MobileConfig 动态创建预测器。框架会根据您在 config 中指定的模型路径、能耗模型、工作线程数等自动创建一个预测器。
参数
config(MobileConfig): 用于构建 Predictor 的配置信息。
返回值
PaddlePredictor指针
run¶
执行模型预测,需要在设置输入数据后调用。
getVersion¶
用于获取当前 lib 使用的代码版本。若代码有相应 tag 则返回 tag 信息,如 v2.0-beta;否则返回代码的 branch(commitid),如 develop(7e44619)。
返回值:
当前库使用的代码版本信息
PowerMode¶
import com.baidu.paddle.lite.PowerMode;
PowerMode 为 ARM CPU 能耗模式,用户可以根据应用场景设置能耗模式获得最优的能效比。
示例:
MobileConfig config = new MobileConfig(); // 设置 NaiveBuffer 格式模型目录 config.setModelDir(modelPath); // 设置能耗模式 config.setPowerMode(PowerMode.LITE_POWER_HIGH); // 根据 MobileConfig 创建 PaddlePredictor PaddlePredictor predictor = PaddlePredictor.createPaddlePredictor(config);
PowerMode详细说明如下:
| 选项 | 说明 |
|---|---|
| LITE_POWER_HIGH | 绑定大核运行模式。如果 ARM CPU 支持 big.LITTLE,则优先使用并绑定 Big cluster,如果设置的线程数大于大核数量,则会将线程数自动缩放到大核数量。如果系统不存在大核或者在一些手机的低电量情况下会出现绑核失败,如果失败则进入不绑核模式。 |
| LITE_POWER_LOW | 绑定小核运行模式。如果 ARM CPU 支持 big.LITTLE,则优先使用并绑定 Little cluster,如果设置的线程数大于小核数量,则会将线程数自动缩放到小核数量。如果找不到小核,则自动进入不绑核模式。 |
| LITE_POWER_FULL | 大小核混用模式。线程数可以大于大核数量,当线程数大于核心数量时,则会自动将线程数缩放到核心数量。 |
| LITE_POWER_NO_BIND | 不绑核运行模式(推荐)。系统根据负载自动调度任务到空闲的 CPU 核心上。 |
| LITE_POWER_RAND_HIGH | 轮流绑定大核模式。如果 Big cluster 有多个核心,则每预测10次后切换绑定到下一个核心。 |
| LITE_POWER_RAND_LOW | 轮流绑定小核模式。如果 Little cluster 有多个核心,则每预测10次后切换绑定到下一个核心。 |
Tensor¶
import com.baidu.paddle.lite.Tensor;
Tensor 是 Paddle Lite 的数据组织形式,用于对底层数据进行封装并提供接口对数据进行操作,包括设置维度、数据等。
注意:用户应使用 PaddlePredictor 的 getInput 和 getOuput 接口获取输入/输出的 Tensor。
示例:
// 导入 Java API import com.baidu.paddle.lite.MobileConfig; import com.baidu.paddle.lite.Tensor; import com.baidu.paddle.lite.Predictor; import com.baidu.paddle.lite.PowerMode; // 设置 MobileConfig MobileConfig config = new MobileConfig(); config.setModelDir(modelPath); // 创建 PaddlePredictor PaddlePredictor predictor = PaddlePredictor.createPaddlePredictor(config); // 设置输入数据 long[] dims = {100, 100}; float[] inputBuffer = new float[10000]; for (int i = 0; i < 10000; ++i) { inputBuffer[i] = i; } // 获取输入 Tensor Tensor input = predictor.getInput(0); // 设置输入维度 input.resize(dims); // 设置输入数据 input.setData(inputBuffer); // 执行预测 predictor.run(); // 获取输出 Tensor Tensor result = predictor.getOutput(0); // 获取输出数据 float[] output = result.getFloatData(); for (int i = 0; i < 1000; ++i) { System.out.println(output[i]); }