Skip to content

Cannot get correct translation results (NLLB-200-distilled-600M) #2017

@MSJavaScript

Description

@MSJavaScript

Hello, I am trying to use CTranslate2 to call the NLLB model, the program runs slowly and always returns rubbish results.
I compiled CTranslate2 and sentencepiece by Visual Studio 2022. Here are my codes:

#include <ctranslate2/translator.h>
#include <sentencepiece_processor.h>
#include <iostream>
#include <vector>
#include <string>

int main() {

    std::string model_path = "F:/temp_work/LLM-models/nllb-200-distilled-600M-ct2-int8";
    std::string sp_model_path = model_path + "/sentencepiece.bpe.model";

    // Load the tokenize model
    sentencepiece::SentencePieceProcessor processor;
    const auto status = processor.Load(sp_model_path);
    if (!status.ok()) {
        std::cerr << status.ToString() << std::endl;
        return -1;
    }

    // load the NLLB model 
    ctranslate2::Translator translator( model_path, ctranslate2::Device::CPU);

    std::string input_text = u8"抽象代数重要的研究对象有:群、环和域。";
    std::cout << input_text << std::endl;
    // encode the string to token string
    // You don't need to set what the language is.
    std::vector<std::string> encoded_input_text;
    processor.Encode(input_text, &encoded_input_text); 
     
    // encoded_input_text.insert(encoded_input_text.begin(), "zho_Hans");
    //The input of the translation model should be a batch.
    std::vector<std::vector <std::string>> input_batch = { encoded_input_text };

    ctranslate2::TranslationOptions options;
    options.max_decoding_length = 1024;
    options.max_input_length = 512;
    options.sampling_temperature = 0.7;
    options.no_repeat_ngram_size = 0;


    std::vector<std::vector<std::string>> target_prefix = { {"eng_Latn"} };
    
    std::vector<ctranslate2::TranslationResult> results = translator.translate_batch(
        input_batch, 
        target_prefix,
        options);

    std::vector<std::string> output = results[0].output();
    std::string output_text;
    processor.Decode(output, &output_text);
    
    std::cout << "Translation: " << output_text << std::endl;

    return 0;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions