はじめに
KBLaMはマイクロソフトによって開発されたオープンソースプロジェクトで、正式名称は「知識ベース拡張言語モデル」(Knowledge Base Augmented Language Model)である。これは、外部の知識をベクトルに変換し、大規模なモデルのアテンション層に埋め込むことで、モデルが質問や推論に答えるためにこの知識を直接使用できるようにする。KBLaMはGitHubでオープンソース化されており、主に研究者や開発者を対象としている。現在、MetaのLlamaファミリーやMicrosoftのPhi-3などのモデルをサポートしている。
機能一覧
- モデル拡張のために、外部の知識ベースをキーと値のベクトルペアに変換する。
- 長方形注意メカニズムを用いた大規模モデルへの知識の埋め込み.
- モデルを再トレーニングすることなく、知識ベースの動的な更新をサポート。
- 計算コストは知識ベースの大きさに応じて線形に成長し、効率的である。
- 研究開発を促進するためのオープンソースコード、実験スクリプト、データセット。
- クイズや推論などのタスクをサポートし、知識ベースに基づいて正確な回答を生成できる。
- ベースモデルのテキスト処理能力を変更せず、本来の性能を維持。
ヘルプの使用
KBLaMは研究用のオープンソースツールで、コードとドキュメントはGitHubから入手できます。下記は、ユーザーがすぐに使い始められるように、インストールと使用方法の詳細なガイドです。
設置プロセス
- 環境を整える
Python 3.8以上とGitが必要。LinuxまたはWindowsを推奨。大規模な知識ベースを扱う場合は、NVIDIA GPU(例えば、80GB以上のビデオメモリを搭載したA100)を推奨します。 - ダウンロード倉庫
ターミナルを開き、KBLaMリポジトリをクローンするコマンドを入力する:
git clone https://github.com/microsoft/KBLaM.git
プロジェクト・カタログにアクセスする:
cd KBLaM
- 依存関係のインストール
以下のコマンドを実行して、必要なライブラリをインストールする:
pip install -e .
これでPyTorch、Transformers、その他の依存関係がインストールされます。Llamaモデルを使う必要がある場合は、Hugging Faceツールもインストールしてログインする必要があります:
pip install huggingface_hub
huggingface-cli login
ログインするには、Hugging Faceからトークンを生成する必要があります。
- インストールの確認
テストスクリプトを実行し、環境に問題がないことを確認する:
python -m kblam.test
エラーが報告されなければ、インストールは成功です。
主な機能
1.ナレッジベースの作成
KBLaMは外部知識をベクトル・ペアに変換する必要がある。
- 動く::
- ナレッジ・ベース・ファイル(JSON形式など)を用意する:
{"entity": "AI", "description": "人工智能是模拟人类智能的技术"}
- ベクトルを生成する:
python dataset_generation/generate_kb_embeddings.py --input knowledge.json --output embeddings.npy
- サポートされているエンベッディング・モデルは以下の通り。
text-embedding-ada-002
歌で応えるall-MiniLM-L6-v2
.出力ファイルembeddings.npy
は知識ベクトルである。
2.知識をモデルに組み込む
大規模モデルの注意層に知識ベクトルを埋め込む。
- 動く::
- 対応モデルのダウンロード(例
meta-llama/Meta-Llama-3-8B-Instruct
). - 埋め込みスクリプトを実行する:
python src/kblam/integrate.py --model meta-llama/Meta-Llama-3-8B-Instruct --kb embeddings.npy --output enhanced_model
- 強化されたモデルカタログのエクスポート
enhanced_model
.
3.強化モデルのテスト
エンハンスメントモデルをロードし、効果をテストする。
- 動く::
- テストスクリプトを実行する:
python src/kblam/evaluate.py --model enhanced_model --question "AI是什么?"
- AIは人間の知性をシミュレートする技術です。
注目の機能操作
知識ベースの動的更新
KBLaMはモデルを再トレーニングすることなく、いつでも知識ベースを更新することができる。
- 動く::
- ナレッジ・ベース・ファイルを修正し、新しいエントリーを追加する:
{"entity": "KBLaM", "description": "微软开发的知识增强工具"}
- 新しいベクトルを生成する:
python dataset_generation/generate_kb_embeddings.py --input updated_knowledge.json --output new_embeddings.npy
- モデルを更新する:
python src/kblam/integrate.py --model enhanced_model --kb new_embeddings.npy --output updated_model
- 更新されたモデルは、すぐに新しい知識を使うことができる。
トレーニング・アダプター
知識埋め込み効果を最適化するためのアダプターのトレーニング。
- 動く::
- 合成データセットによるトレーニング:
python train.py --dataset synthetic_data --N 120000 --B 20 --total_steps 601 --encoder_spec OAI --use_oai_embd --key_embd_src key --use_data_aug
- 合成データを生成するには、Azure OpenAIエンドポイントが必要です。
dataset_generation/gen_synthetic_data.py
.
さいはつじっけん
リポジトリには、論文の結果を再現する実験スクリプトが用意されている。
- 動く::
- 実験カタログへ
cd experiments
- スクリプトを実行する:
python run_synthetic_experiments.py
- 合成データセットを生成するには、Azure OpenAIのキーを設定する必要がある。
ほら
- モデルサポート現在のサポート
Meta-Llama-3-8B-Instruct
そしてLlama-3.2-1B-Instruct
歌で応えるPhi-3-mini-4k-instruct
.追加モデルの修正が必要src/kblam/models
のアダプター・コードは - ハードウェア要件大規模な知識ベースを処理するには高性能なGPUが必要ですが、小規模な実験であればCPUでも実行できます。
- 質問のフィードバック問題が発生した場合は
SUPPORT.md
またはGitHubに課題を提出する。
アプリケーションシナリオ
- 研究実験
研究者はKBLaMを使って、化学分野の知識ベースを埋め込むなど、大規模モデルが専門知識をどのように扱うかをテストし、モデルの回答精度を向上させることができる。 - 企業Q&A
開発者は、会社のドキュメントをナレッジベース化し、従業員や顧客の質問に素早く答えるインテリジェント・アシスタントを開発することができる。 - 教材
教師は、コース教材をKBLaMに組み込むことで、生徒の質問に答え、学習効果を高めるツールを作成することができる。
品質保証
- KBLaMは従来のファインチューニングとどう違うのですか?
KBLaMはベースモデルを修正せず、アダプター埋め込み知識のみをトレーニングする。従来の微調整では、モデル全体を再トレーニングする必要があり、コストがかかる。 - 本番環境に適しているか?
KBLaMは研究プロジェクトです。知識ベースがトレーニングデータと違いすぎると、回答が不正確になる可能性があります。公式な推奨は、研究のみに使用することです。 - KBLaMのパフォーマンスはどのように評価できますか?
精度(知識がどれだけ正しく検索されたか)、棄却率(回答不可能な質問が正しく識別されたか)、回答の精度と再現率によって評価される。