InstructLabとは
InstructLabは、IBM ResearchとRed Hatによって開発されたオープンソースプロジェクトで、生成AI(特に大規模言語モデル、LLM)のカスタマイズとチューニングを効率的に行うためのプラットフォームです。これは、AIの開発をコミュニティ主導で進めるための新しい手法を提供し、特定のタスクに適応した合成データを生成し、モデルを強化することを目指しています。
背景
生成AIとLLMは、多くの産業に革命をもたらしていますが、効果的に使用し、拡張するためには多大な投資と努力が必要です。特に、モデルを適切にチューニングし、企業のニーズに合わせてカスタマイズするためには、高品質なデータが必要です。しかし、そのデータを生成することは困難でコストがかかるため、多くの企業が苦労しています。
特徴
合成データ生成: LAB(Large-Scale Alignment for ChatBots)手法に基づき、体系的に合成データを生成することで、モデルが新しいタスクを迅速に学習できるようにします。
コミュニティ主導: 開発者が共同でモデルを強化するためのプラットフォームを提供し、オープンな場での貢献を促進します。
低コストで効率的: 通常のLLMの学習よりも短時間、低コストでモデルを改善できる技術を提供します。
利点
- 柔軟なカスタマイズ: モデルが既存の知識を上書きせずに、新しい知識や機能を取り入れることができます。
- 高パフォーマンス: IBMのベンチマークテストでは、InstructLab手法を用いたモデルが優れたパフォーマンスを示しています。
- アクセスと支援: 開発者は、プロジェクトのためのシードコンピューティングとインフラストラクチャーにアクセスでき、Red Hatが全体調整を行い、週単位でコミュニティからの貢献を統合します。
試してみた
以下の情報をもとに実施してみました。
0. 必要な環境
以下が公式サイトで紹介されている要件です。ここではApple M1/Python 3.12を使用します。(Pythonのバージョンは高いですが、いったん最後まで実施してみました。)
- 🍎 Apple M1/M2/M3 Mac or 🐧 Linux system (tested on Fedora). Note Linux is not fully supported (testing a trained model does not currently work on Linux). We anticipate support for more operating systems in the future.
- C++ compiler
- Python 3.10 or Python 3.11
- Approximately 60GB disk space (entire process)
1. Anaconda環境準備
必須ではないのですが、既存の環境と分けて作成したいため、今回はAnacondaで環境を作成します。
conda create --name ilab
Pythonはx86ではなくarm64である必要があります。
file -b $(command -v python)
あるいはfile -b $(command -v python3)
で確認してみてください。
Anaconda環境を起動します。
conda activate ilab
2. instructlabのインストール
ディレクトリを作成します。
mkdir instructlab
cd instructlab
instructlabをインストールします。
python3 -m venv --upgrade-deps venv
source venv/bin/activate
pip cache remove llama_cpp_python
pip install instructlab
うまくインストールできたを確認します。
ilab
以下が表示されます。
Usage: ilab [OPTIONS] COMMAND [ARGS]...
CLI for interacting with InstructLab.
If this is your first time running ilab, it's best to start with `ilab init`
to create the environment.
Options:
--config PATH Path to a configuration file. [default: config.yaml]
--version Show the version and exit.
--help Show this message and exit.
Commands:
config Command Group for Interacting with the Config of InstructLab.
data Command Group for Interacting with the Data generated by...
model Command Group for Interacting with the Models in InstructLab.
sysinfo Print system information
taxonomy Command Group for Interacting with the Taxonomy of InstructLab.
Aliases:
chat: model chat
convert: model convert
diff: taxonomy diff
download: model download
generate: data generate
init: config init
serve: model serve
test: model test
train: model train
3. 初期化
ilabを初期化します。
ilab config init
以下が出力されます。
Welcome to InstructLab CLI. This guide will help you to setup your environment.
Please provide the following values to initiate the environment [press Enter for defaults]:
Path to taxonomy repo [taxonomy]:
そのままエンターキーを押すと次のメッセージが表示されますので、yを入力してからエンターキーを押します。
`taxonomy` seems to not exist or is empty. Should I clone https://github.com/instructlab/taxonomy.git for you? [y/N]:
以下が表示されます。
Cloning https://github.com/instructlab/taxonomy.git...
Generating `config.yaml` in the current directory...
Initialization completed successfully, you're ready to start using `ilab`. Enjoy!
4. モデルの利用
モデルをダウンロードします。特に指定しない場合はmerlinite-7b-lab-Q4_K_M.ggu
がダウンロードされました。
ilab model download
モデルを利用できるようにします。
ilab model serve
以下のようにひょうじされます。
INFO xxxx-xx-xx xx:xx:xx,xxx serve.py:51: serve Using model 'models/merlinite-7b-lab-Q4_K_M.gguf' with -1 gpu-layers and 4096 max context size.
INFO xxxx-xx-xx xx:xx:xx,xxx server.py:218: server Starting server process, press CTRL+C to shutdown server...
INFO xxxx-xx-xx xx:xx:xx,xxx server.py:219: server After application startup complete see http://127.0.0.1:8000/docs for API.
先ほどのターミナルはそのままにして、新しいターミナルを立ち上げて、以下を実行します。
cd /instructlab
source venv/bin/activate
ilab model chat
以下の画面が現れ、チャットできるようになります。
╭────────────────────────────────────────────── system ──────────────────────────────────────────────╮
│ Welcome to InstructLab Chat w/ MODELS/MERLINITE-7B-LAB-Q4_K_M.GGUF (type /h for help) │
╰────────────────────────────────────────────────────────────────────────────────────────────────────╯
>>> What is the highest mountain in Japan? [S][default]
╭─────────────────────────────── models/merlinite-7b-lab-Q4_K_M.gguf ────────────────────────────────╮
│ The highest mountain in Japan is called Mount Fuji. It has an elevation of 3776 meters above sea │
│ level. │
╰──────────────────────────────────────────────────────────────────────────── elapsed 1.088 seconds ─╯
>>> [S][default]
このように、まずはセットアップをが完了しました。
part2では知識の登録、データの生成、モデルのチューニングに進みます。