You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Deep Java Library(DJL)中运行EasyNMT模型完成翻译?

在DJL中加载EasyNMT模型并完成翻译

EasyNMT底层基于Hugging Face Transformers预训练翻译模型,因此在DJL中需借助其Transformers适配模块实现推理,以下是完整操作步骤:

1. 修正模型加载逻辑

你之前的代码仅加载单个.pth文件,这并不适配EasyNMT的Hugging Face格式模型(需包含config.json、tokenizer.json等完整文件)。正确加载方式如下:

Path modelDir = Paths.get("/Users/.../your-easynmt-model-folder"); // 指向包含所有模型文件的目录
HuggingFaceTokenizer tokenizer = HuggingFaceTokenizer.newInstance(modelDir);
HuggingFaceModel model = HuggingFaceModel.newInstance(modelDir, Device.cpu(), "translation");

2. 配置翻译参数

对应Python版translate方法的参数,在DJL中通过生成配置设置:

  • target_lang:通过指定目标语言的bos token ID实现(需匹配模型词汇表)
  • max_new_tokens:在生成配置中设置最大生成token数

3. 执行翻译推理

完整可运行代码示例:

import ai.djl.huggingface.tokenizer.HuggingFaceTokenizer;
import ai.djl.huggingface.translator.TextGenerationTranslator;
import ai.djl.huggingface.zoo.HuggingFaceModel;
import ai.djl.inference.Predictor;
import ai.djl.repository.zoo.Model;
import ai.djl.translate.TranslateException;

import java.nio.file.Path;
import java.nio.file.Paths;

public class EasyNMTTranslateDemo {
    public static void main(String[] args) throws Exception {
        // 替换为你的模型目录路径
        Path modelDir = Paths.get("/Users/.../your-easynmt-model-folder");

        // 初始化Tokenizer
        HuggingFaceTokenizer tokenizer = HuggingFaceTokenizer.newInstance(modelDir);

        // 构建翻译转换器,配置目标语言和生成参数
        TextGenerationTranslator translator = TextGenerationTranslator.builder()
                .setTokenizer(tokenizer)
                .addGenerationConfig("max_new_tokens", 1000)
                // 根据模型词汇表设置目标语言的bos token,示例为英文
                .addGenerationConfig("forced_bos_token_id", tokenizer.getVocabulary().getIndex("<s>en"))
                .build();

        // 加载模型
        Model model = HuggingFaceModel.newInstance(modelDir, Device.cpu(), "translation");

        // 创建Predictor并执行翻译
        try (Predictor<String, String> predictor = model.newPredictor(translator)) {
            String inputText = "Dies ist ein Satz in Deutsch.";
            String translatedText = predictor.predict(inputText);
            System.out.println("翻译结果:" + translatedText);
        }
    }
}

注意事项

  • 模型目录必须包含完整的Hugging Face模型文件,不能仅放置单个.pth文件
  • 不同模型的语言token标识可能不同,需根据模型的vocabulary调整forced_bos_token_id的值
  • 确保已引入DJL Transformers相关依赖(如ai.djl.huggingface:huggingface-engine)

内容的提问来源于stack exchange,提问作者zenzenzenone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 17:54:33