import sentencepiece as spm from vllm import LLM, SamplingParams from vllm.inputs import TokensPrompt SPM = "/model/nordic_unigram_65k.model" LANG = {"en": 65000, "sv": 65001, "da": 65002, "nb": 65003, "nn": 65004, "fi": 65005, "is": 65006} BOS, EOS, EOS_SRC = 1, 2, 65007 def main(): sp = spm.SentencePieceProcessor(); sp.load(SPM) llm = LLM(model="/model", trust_remote_code=True, skip_tokenizer_init=True, dtype="bfloat16", max_model_len=512, gpu_memory_utilization=0.55, enforce_eager=True) def translate(text, tgt): ids = [BOS, LANG[tgt]] + sp.encode(text, out_type=int) + [EOS_SRC] sp_out = llm.generate(TokensPrompt(prompt_token_ids=ids), SamplingParams(temperature=0.0, max_tokens=64, stop_token_ids=[EOS])) toks = list(sp_out[0].outputs[0].token_ids) return sp.decode([t for t in toks if t < 65000]) print("\n===== vLLM TRANSLATIONS =====") for txt, tgt in [("Hello, how are you today?", "sv"), ("The weather is nice and the sun is shining.", "sv"), ("I would like to order a coffee, please.", "nb"), ("Thank you very much for your help.", "is")]: print(f"[en->{tgt}] {txt}\n -> {translate(txt, tgt)}") if __name__ == "__main__": main()