Views
No views yet
pfnet/plamo-2-translate にAWQ (INT4) 量子化を適用し、さらにWebGPU推論向けの調整を施したONNXモデルです。transformers.jsによりモデルをロードし、同梱のplamo2_onnx_for_webgpu_module.mjsをヘルパとしてmodel.generate関数にパッチをあてて翻訳を実行する構成です。<|plamo:op|>に設定しています。getPlamo2OnnxForWebGPUModelLoadOptions()を使って必要オプションを用意しTransformers.js v4によりモデルをロードするattachPlamo2GenerateFastPath(...)によりモデルインスタンスにパッチをあてて専用generateへ差し替えるbuildPlamo2TranslationPrompt(...)で翻訳プロンプトを組み立て、tokenizerでinput_idsへエンコードするmodel.generate(...)で翻訳する1import * as tx from '@huggingface/transformers';
2import { Tensor } from '@huggingface/transformers/src/utils/tensor.js';
3import {
4 attachPlamo2GenerateFastPath,
5 buildPlamo2TranslationPrompt,
6 getPlamo2OnnxForWebGPUModelLoadOptions,
7} from './plamo2_onnx_for_webgpu_module.mjs';
8
9const tokenizer = await tx.AutoTokenizer.from_pretrained('yufuin/plamo-2-translate-AWQ-INT4-ONNX-WEBGPU');
10
11const model = await tx.AutoModel.from_pretrained('yufuin/plamo-2-translate-AWQ-INT4-ONNX-WEBGPU', getPlamo2OnnxForWebGPUModelLoadOptions());
12
13attachPlamo2GenerateFastPath(model, { Tensor });
14
15const prompt = buildPlamo2TranslationPrompt({
16 sourceLang: 'English',
17 targetLang: 'Japanese',
18 text: 'Please translate this sentence.',
19});
20
21const encoded = tokenizer(prompt, {
22 add_special_tokens: false,
23 return_attention_mask: false,
24});
25
26const output = await model.generate({
27 inputs: encoded.input_ids,
28 max_new_tokens: 256,
29 do_sample: false,
30 temperature: 1.0,
31 top_k: 50,
32 top_p: 1.0,
33 num_beams: 1,
34 num_return_sequences: 1,
35});plamo-2-translateは想定する翻訳プロンプトフォーマットが決まっています。
フォーマットに合うプロンプトを構成するヘルパとしてbuildPlamo2TranslationPromptを提供しています。| 名前 | DType | Shape | 説明 |
|---|---|---|---|
input_ids | int64 | [batch, sequence] | 現在の prompt または decode step の token ids |
past_attn_key | float32 | [16, batch, 4, cache_sequence, 128] | attention KV cache |
past_attn_value | float32 | [16, batch, 4, cache_sequence, 128] | attention KV cache |
past_mamba_conv_state | float32 | [16, batch, 8192, 3] | Mamba convolution state cache |
past_mamba_ssm_state | float32 | [16, batch, 64, 128, 64] | Mamba SSM state cache |
| 名前 | DType | Shape | 説明 |
|---|---|---|---|
logits | float32 | [batch, 1, 100032] | 最後の位置に対応する logits |
next_past_attn_key | float32 | [16, batch, 4, cache_sequence_out, 128] | 更新後 attention KV cache |
next_past_attn_value | float32 | [16, batch, 4, cache_sequence_out, 128] | 更新後 attention KV cache |
next_past_mamba_conv_state | float32 | [16, batch, 8192, 3] | 更新後 Mamba convolution state |
next_past_mamba_ssm_state | float32 | [16, batch, 64, 128, 64] | 更新後 Mamba SSM state |
input_idsのsequenceサイズは[1,8]の範囲に限られます。
attachPlamo2GenerateFastPath適用後のmodel.generate(...)を実行した場合はinput_idsのスライスは自動で処理されるため、通常はONNX入出力形状を直接意識する必要はありません。
batch = 1前提です。pfnet/plamo-2-translate の派生配布物であり、ライセンスはupstreamと同じPLaMo Community Licenseです。LICENSE/jaLICENSE/enBuilt with PLaMo を明示する必要があります。