シンプルな翻訳AI「TransAI」

【更新履歴】

 ・2026/5/8 バージョン1.0公開。
 ・2026/5/9 バージョン1.1公開。
 ・2026/5/9 バージョン1.2公開。
 ・2026/5/10 バージョン1.3公開。
 ・2026/5/10 バージョン1.4公開。
 ・2026/5/10 バージョン1.4.1公開。


画像
翻訳タブ
画像
学習タブ
画像
設定タブとモデルの作成画面


・いろいろと技術的なテストをするために作った簡単なもので、
 これが一番すごい!・・・とかいうものではないんですが、
 一応、使えるのではないかなと思います。

・ダウンロードされる方はこちら。↓


《 ボキャブラリファイル(tokenizer.json)の入手先 》

・翻訳モデルは「ゼロから学習(スクラッチ)」させますが、
 文字をIDに変換するルール(ボキャブラリ)だけは、
 世界トップクラスの多言語モデルから拝借することで、
 学習効率が劇的に向上します。

・おすすめは、
 現在最も日本語と英語の分割(トークナイズ)が優秀な
 Qwen または Llama のボキャブラリです。

・どちらもHugging Faceから無料でダウンロードでき、
 知財的にも安全(Apache 2.0 / Llamaライセンス)です。

おすすめ:

・Qwen の tokenizer.json (語彙数 約15万)
 ・特に日本語・中国語・英語の多言語処理に優れています。

ダウンロードURL (Hugging Face):

https://huggingface.co/Qwen/Qwen2.5-7B/tree/main

手順:

上記リンクにアクセスします。

・画面の右側にある 「↓(Download file)」 ボタンをクリックします。

・ダウンロードした tokenizer.json を、
 TransAI.exe と同じフォルダ(または任意の場所)に配置します。

(※Llamaのボキャブラリを使いたい場合は、
 Hugging Faceのアカウントを作成し、
 Meta社への利用申請ボタンを押す必要があります。
 Qwenは申請不要で、すぐにダウンロードできます。)


■対訳コーパス(学習データ)の準備

・もし手元に「英語と日本語の対訳テキスト」がない場合は、
 テスト用として以下のデータセットを利用できます。

 JParaCrawl v3.0 (商用・研究利用可能な大規模日英コーパス)

 ・日本のNTTなどが構築した、
  Web上の翻訳文を収集した
  巨大なデータセットです。

ダウンロードURL:
https://www.kecl.ntt.co.jp/icl/lirg/jparacrawl/

手順:

・上記サイトから
 データセット(tar.gz または zip)を
 ダウンロードして解凍します。

・英語と日本語の文章が
 「タブ(\t)区切り」で並んでいるテキストファイルを探します。
 (例:en-ja.bicleaner05.txt)

・このファイルを corpus.tsv などの名前で保存し、読み込ませます。

 (※数千万行あるため、
  最初は先頭の1万行だけを切り出した
  小さなファイルで学習テストを行うことを強くお勧めします。)


■ハイパーパラメータの意味(AIの「脳の構造」)


・これらは「設定」タブで決める、
 AIのアーキテクチャ(構造)そのものです。

・一度決めて初期化・学習を始めたら、
 途中で変更することはできません。

 (変更して読み込もうとすると、
  アーキテクチャ不一致エラーになります)

バッチサイズ (Batch Size):

・GPUが「同時に処理する文章の数」です。

・16に設定すると、
 16個の翻訳文をまとめて並列計算します。

・大きくするほど学習スピード(効率)は上がりますが、
 ビデオメモリを爆発的に消費します。

最大系列長 (Max Sequence Length):

・AIが一度に読み込める
 「文章の長さ(トークン数の上限)」です。

・128に設定すると、
 128単語以上の長い文章はスパッと切り捨てられ、
 短い文章は128になるまで
 「PAD(空白)」で埋められます。

・これもビデオメモリの消費に直結します。

隠れ層サイズ (Hidden Size):

・AIの「脳の太さ(表現力)」です。

・512という次元数で
 言葉の意味をベクトル化します。

・この数字を大きくする(例: 1024, 2048)と、
 より複雑なニュアンスを理解できる
 賢いモデルになりますが、
 計算量が指数関数的に増えます。

レイヤー数 (Layers):

・Transformerの思考回路(Attentionブロック)を
 「何段重ねるか」です。

・6に設定すると、
 AIは入力された言葉を
 6回熟考して出力を作ります。

・深い(多い)ほど
 文脈の理解力が高まります。


■学習ステータスの意味(AIの「成長度合い」)

・学習タブに表示されているリアルタイムな数値です。

エポック (Epoch):

・用意した学習データ(数十万行のテキストなど)全体を
 「何周したか」です。

・エポック 1 は、1周目の学習中であることを示します。

バッチ数:

・これまでに重み(知識)の更新を行った回数です。

・画像では「12,780回」更新されたことがわかります。

Loss (損失):

・AI開発において最も重要な数字です。

・AIが出した翻訳と、
 正解の翻訳が
 「どれくらいズレているか(間違いの大きさ)」
 を表します。

・学習が進むにつれて
 8.5 → 5.2 → 2.1... と、
 限りなく 0 に近づいていくのが正常な状態です。


■継続学習(中断と再開)は可能なのか?

・はい、完全に可能です。

・AIの「知識(重み行列)」だけでなく、
 現在の学習の進み具合(adamStep)も
 一緒に .trai ファイルに保存されます。

・途中で「学習停止」を押して「上書き保存」し、
 アプリを閉じても大丈夫です。

・次回起動時に、そのファイルを「開く」で読み込み、
 「学習開始」を押せば、
 前回の知識を引き継いだまま
 途中から学習を再開
できます。


🚨 【超重要】「Loss: NaN」について


これはAIの学習が「崩壊」している状態です。

・NaNは「Not a Number(非数)」の略です。

・GPUの中で行列の掛け算をしている最中に、
 数値が無限大(Infinity)を超えてオーバーフローしたか、
 ゼロ除算が発生したことを意味します。

・この状態になると
 AIの脳内は「真っ白」になっており、
 このまま何時間学習させても、保存しても、
 一切使い物になりません。

 (推論させても無言になるか、エラーを吐きます)


■初期化は毎回必要なのか?(HDDのフォーマットと同じ?)

👉 はい、おっしゃる通り「フォーマット
 (ビデオメモリの確保と、脳の初期化)」です。

・そのため、アプリ運用時のルールは以下のようになります。

新規作成時:

・「初期化する」を押す(VRAMを確保し、脳をランダムな値で初期化)。

前回からの続きを学習時:

・「初期化する」を押した直後に
 「読み込む」を押す。

 (ランダムになった脳に、
  前回保存した知識を上書きする。)

※もし学習の途中で間違えて
 「初期化する」を押してしまうと、
 知識がすべて消し飛んで
 ゼロに戻ってしまうのでご注意ください。


🚀 総合アーキテクチャ分析レポート


・本システム「TransAI」は、
 Python等の巨大なエコシステムに依存せず、
 C#とネイティブCUDA C++のみでゼロから構築された、
 極めて独自性の高いローカルLLMエンジンです。

・RTX 3060等の12GB VRAMという厳しいハードウェア制約の中で、
 巨大なモデルを動かすために、
 ソフトウェアアーキテクチャの極限を追求しています。

1. よく知られた標準機能


・TransAIは、現代のLLM開発において必須とされる
 高度な最適化技術をネイティブレベルで完全実装しています。

  • FP16 Mixed Precision (混合精度学習):

    • 仕組み: 重みの保存やオプティマイザ(AdamW)の計算は精度の高いFP32(32ビット)で行い、行列の掛け算などの重い処理の瞬間だけFP16(16ビット)に変換してGPUの「Tensor Core」に処理させます。

    • 効果: 計算速度が飛躍的に向上し、学習時のVRAM消費を大幅に抑えます。

  • KV Cache (キー・バリュー キャッシュ):

    • 仕組み: 自己回帰推論(文章を1単語ずつ生成する処理)において、過去に計算した単語のAttention情報(KeyとValue)を専用のVRAM領域に保存しておき、次の単語を生成する際は「最新の1単語」だけを計算して過去のキャッシュと照合します。

    • 効果: 計算量が $O(N^2)$ から $O(1)$ へと激減し、長文になっても生成速度が落ちません。

  • FlashAttention (Fused Memory-Efficient Attention):

    • 仕組み: 通常、Attentionの計算過程で作成される巨大なスコア行列はVRAMを食いつぶします。これを、GPUチップ内の超高速なSRAM(共有メモリ)の中で分割計算(Tiling)し、結果だけをVRAMに書き出します。

    • 効果: 長い文脈(MaxSeqLength)を設定してもVRAMが爆発(OOM)しなくなり、メモリアクセスの待ち時間が消滅して高速化します。

  • W8A16 INT8 Dynamic Quantization (動的量子化):

    • 仕組み: 学習が完了したFP32の重みを、1/4のサイズであるINT8(8ビット整数)に圧縮してVRAMに保持します。推論の計算の瞬間だけ、GPUカーネル内でFP16に展開(Dequantize)して計算に掛けます。

    • 効果: VRAM消費量が劇的に減少し、12GBの環境でもより巨大なモデルをロードできるようになります(推論専用)。

  • Temperature / Top-P Sampling:

    • 仕組み: 常に最も確率の高い単語を選ぶのではなく、確率分布に「温度」を掛けて平準化し、上位数%(Top-P)の候補の中からルーレットで次の単語を選びます。

    • 効果: AIの出力が機械的な直訳から、人間らしい自然な「ゆらぎ」や「創造性」を持った文章に変化します。

2. TransAI の独自機能の仕組み


・本システムの特徴は、
 限られたVRAMを無限のように見せかける
 独自のストリーミング技術です。

  • Predictive Streaming(疑似量子アニーリング連携):

    • 仕組み: C#側でユーザーの入力テキストを監視し、ETW(Windowsイベントトレース)を経由してバックグラウンドで「次にAIがどの専門知識(法律、ITなど)の重みを必要とするか」を予測します。

    • QUBO最適化: 予測されたドメイン情報を基に、疑似量子アニーリング(SBA)アルゴリズムが「どの圧縮形式(RawかQuantizedか)でVRAMへロードするのが最も時間とメモリのコスパが良いか」を瞬時に計算します。

    • 非同期VRAM転送: 最適な重みデータを、AIがメインで計算を行っている裏側(cudaStream_t)でこっそりとVRAMへ流し込みます。

    • 効果: ユーザーが推論ボタンを押す頃には、すでに必要な専門知識がVRAM上にセットされています。これにより、12GBの限界を超えた巨大な知識群を、一切のロード時間(フリーズ)なしでシームレスに使い分けることが可能になります。


📖 取り扱い説明書

① 起動と初期設定

  1. TransAIを起動すると「設定」タブが開きます。

  2. 「辞書ファイル (*.json)」にHuggingFace形式のトークナイザーのパスを指定します。

  3. 「学習データ (*.tsv)」にタブ区切りのコーパスデータを指定します。

  4. バッチサイズ、系列長、レイヤー数などのハイパーパラメータは、画面上部のメニュー「ファイル」>「新規モデルの作成」から設定できます。

  5. 「初期化する」ボタンを押します。バックグラウンドでVRAMの確保とエンジンのセットアップが行われます(フリーズしません)。

② モデルの学習 (Training)

  1. 「学習」タブを開きます。

  2. 学習率(LR)を入力し(例: 0.0001)、「▶ 学習開始」ボタンを押します。

  3. Loss(誤差)が徐々に下がっていくことを確認してください。

  4. 中断する場合は「⏹ 学習停止」を押します。メニューから「上書き保存」を選択して、学習済みモデル(*.trai)を保存できます。

③ 推論専用化(INT8量子化)による高速化

  • モデルの学習が完了し、本番運用に入る場合は、「設定」タブの「INT8量子化(推論化)」ボタンを押します。

  • VRAM上の学習用データがすべて破棄され、重みが1/4サイズに圧縮されます。

  • 注意: 量子化後は、そのセッションでの学習や保存はできなくなります。

④ 翻訳・対話の実行 (Inference)

  1. 「翻訳」タブを開きます。

  2. 入力欄にテキストを入力し、必要に応じて「温度(ゆらぎ)」と「Top-p」の数値を調整します。

  3. 「翻訳する」ボタンを押すと、KV Cacheを利用した爆速生成が行われ、結果が下部に出力されます。

  4. 入力内容に応じて、SBAが裏側で自動的に最適なドメイン知識をストリーミングします。


❓ FAQ (よくある質問)

Q. 初期化ボタンを押した後、すぐに学習や推論ができないのはなぜですか?

A. 初期化ボタンを押すと、C++エンジンがGPUのVRAMにギガバイト単位のメモリ空間を確保(cudaMalloc)し、初期の乱数設定などを行います。画面がフリーズしないよう非同期で処理しているため、「ステータス: 準備完了」と表示されるまで数秒お待ちください。

Q. 「INT8量子化」を行うとモデルが保存できなくなるのはなぜですか?

A. AIの重みを8ビットに圧縮する際、学習に必要な高精度な「FP32マスターデータ」や「AdamWの勾配記憶領域」を、VRAMを空けるために意図的に完全に破棄(Free)しているためです。量子化は「実働用サーバーに載せるための最終形態への変身」とお考えください。保存したい場合は量子化する前に保存してください。

Q. Temperature(温度)とTop-pはどう設定すればいいですか?

A. 正確な事実や直訳を求めたい場合は「温度を 0.1」など低く設定してください。人間らしい自然な言い回しやアイデア出しをさせたい場合は「温度 0.8、Top-p 0.9」程度が標準的なベストプラクティスです。

Q. RTX 3060 (12GB) の環境で、エラー(OOM)にならずにどこまで設定を上げられますか?

A. 本システムはFlashAttentionを搭載しているため、最大系列長(SeqLength)を2048などに伸ばしてもメモリは爆発しません。しかし、隠れ層のサイズ(HiddenSize)やレイヤー数(Layers)を極端に上げると12GBを突破します。エラーが出る場合は、レイヤー数を減らすか、INT8量子化モードを活用してください。

Q. 別のアプリ(SynapseやAptStriker)からこのエンジンを使えますか?

A. 現在はネイティブDLL(TransAILib.dll)としてビルドされているため、C#のP/Invokeを使用すればどの.NETアプリからでも直接呼び出すことが可能です。今後のアップデートでローカルAPIサーバー化(HTTP経由での呼び出し)も視野に入れています。

いいなと思ったら応援しよう!

コメント

コメントするには、 ログイン または 会員登録 をお願いします。
シンプルな翻訳AI「TransAI」|古井和雄
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1