从零开发短视频电商 用Java框架部署模型并推理 - Deep Java Library (DJL)

2023-12-13 15:40:07

文章目录

    • 支持引擎
    • 模型库
    • 示例一 基础模型 图片分类
    • 示例二 huggingface模型库 文本嵌入
      • 获取Tokenization标记(tokens)的数量

官网https://djl.ai/

动手学深度学习-中文https://d2l-zh.djl.ai/

支持模型

  • PyTorch TorchScript model
  • TensorFlow SavedModel bundle
  • Apache MXNet model
  • ONNX model
  • TensorRT model
  • Python script model
  • PaddlePaddle model
  • TFLite model
  • XGBoost model
  • LightGBM model
  • Sentencepiece model
  • fastText/BlazingText model

支持引擎

目前,DJL 支持的引擎有:

选择引擎,必须将其添加到 Java 类路径中,即添加对应的 Maven 依赖。

例如pytorch

<!-- 会根据机器自动下载 win/macos/linux 动态库 -->
<dependency>
 <groupId>ai.djl.pytorch</groupId>
 <artifactId>pytorch-engine</artifactId>
 <version>0.25.0</version>
 <scope>runtime</scope>
</dependency>

<!-- 也可以直接安装 例如windows下 -->
<dependency>
 <groupId>ai.djl.pytorch</groupId>
 <artifactId>pytorch-native-cpu</artifactId>
 <classifier>win-x86_64</classifier>
 <scope>runtime</scope>
 <version>2.0.1</version>
</dependency>
<dependency>
 <groupId>ai.djl.pytorch</groupId>
 <artifactId>pytorch-jni</artifactId>
 <version>2.0.1-0.25.0</version>
 <scope>runtime</scope>
</dependency>

模型库

内置模型库model-zoo,可以很方便的加载使用内置模型。

  • 基本模型库,基本模型包中提供与引擎无关的 ZooModel 。它们可用于任何 DJL 后端引擎。

    <dependency>
        <groupId>ai.djl</groupId>
        <artifactId>model-zoo</artifactId>
        <version>0.25.0</version>
    </dependency>
    
  • HuggingFace model zoo

    <dependency>
        <groupId>ai.djl.huggingface</groupId>
        <artifactId>tokenizers</artifactId>
        <version>0.25.0</version>
    </dependency>
    
  • PyTorch model zoo

    <dependency>
        <groupId>ai.djl.pytorch</groupId>
        <artifactId>pytorch-model-zoo</artifactId>
        <version>0.25.0</version>
    </dependency>
    
  • TensorFlow model zoo

    <dependency>
        <groupId>ai.djl.tensorflow</groupId>
        <artifactId>tensorflow-model-zoo</artifactId>
        <version>0.25.0</version>
    </dependency>
    
  • MXNet model zoo

    <dependency>
        <groupId>ai.djl.mxnet</groupId>
        <artifactId>mxnet-model-zoo</artifactId>
        <version>0.25.0</version>
    </dependency>
    

还可以自己向模型库中添加新模型

示例一 基础模型 图片分类

示例:https://github.com/deepjavalibrary/djl/tree/master/examples

示例:https://github.com/deepjavalibrary/djl-demo

1.选择基础的内置模型库和运行时引擎

<dependency>
    <groupId>ai.djl</groupId>
    <artifactId>model-zoo</artifactId>
    <version>0.25.0</version>
</dependency>
<dependency>
    <groupId>ai.djl.pytorch</groupId>
    <artifactId>pytorch-engine</artifactId>
    <version>0.25.0</version>
</dependency>

2.在选择的模型库中查找模型

// 列举所有的模型
 Map<Application, List<Artifact>> models = ModelZoo.listModels();
        models.forEach(
                (app, list) -> {
   
                    String appName = app.toString();
                    list.forEach(artifact -> logger.info("{} {}", appName, artifact));
                });
- CV.IMAGE_CLASSIFICATION ai.djl.zoo/mlp/0.0.3/mlp {
   "dataset":"mnist"}
- CV.IMAGE_CLASSIFICATION ai.djl.zoo/resnet/0.0.2/resnetv1 {
   "layers":"50","flavor":"v1","dataset":"cifar10"}
- CV.OBJECT_DETECTION ai.djl.zoo/ssd/0.0.2/ssd {
   "flavor":"tiny","dataset":"pikachu"}

// 在模型中通过optFilter过滤出自己想要的模型
Criteria<Image, Classifications> criteria =
            Criteria.builder()
                    .optApplication(Application.CV.IMAGE_CLASSIFICATION)
                    .setTypes(Image.class, Classifications.class)
                    .optFilter("layers", "50")
                    .optFilter("flavor", "v1")
                    .optFilter("dataset", "cifar10")
         

文章来源:https://blog.csdn.net/abu935009066/article/details/134903020
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。