# 最佳实践

# 如何提升模型推理速度?

在 SmartJavaAI 启动后,首次调用接口可能会较慢(因模型加载和编译),但后续调用将大幅加快。

以下是一些性能优化建议:

1、充分利用 Java 多线程:在并发场景下,使用线程池并行处理多张图片

2、选择轻量模型:查看模型列表,优先选用速度快的模型。

3、关闭不必要的中间处理环节:例如在人脸识别中关闭“人脸对齐”操作,在 OCR 中关闭“方向矫正”等预处理。如果输入图像本身已是标准正向,则无需启用这些功能,可提升处理效率。

4、使用 GPU 加速:部署支持 GPU 的环境,可显著提升推理速度。

# SmartJavaAI 支持多线程吗?

SmartJavaAI 大部分模型基于 DJL (Deep Java Library) (opens new window) 构建。DJL 原生支持多线程推理:

  • 在多核 CPU 或 GPU 上,可显著提升推理吞吐量;
  • 相较于 Python 实现,内存占用更低,更适合生产部署场景。

# 线程安全

为了确保线程安全,SmartJavaAI 内部封装使用了 Apache Commons Pool2,可为每个线程提供独立的模型实例。开发者无需关心线程竞争问题,直接在多线程环境中使用即可。

# 自定义缓存路径

程序运行时,会自动将依赖库和模型加载到默认的缓存路径(离线模型除外),不同操作系统的默认缓存路径如下:

依赖库及缓存目录
windows C:/Users/{user}/smartjavaai_cache
linux /root/smartjavaai_cache
macos /Users/{user}/smartjavaai_cache

在加载模型前,可通过以下接口自定义缓存路径(用于底层依赖库及模型文件等资源缓存):

Config.setCachePath("d:/smartjavaai_cache");

注意事项:

1、请务必在调用 SmartJavaAI 获取模型之前设置,否则将使用默认缓存路径。

2、提示: "d:/smartjavaai_cache" 仅为示例路径,请根据实际环境修改为你自己的本地路径(仅支持绝对路径)。

3、路径中不得包含中文字符或空格,否则可能导致模型加载失败