このリポジトリは、自分向けAI開発のテストを効率よく行うためのテンプレートです。
src/: モデル・エージェント・データセット・ユーティリティtests/: 各種テスト(smoke, 性能, 再現性, agent, loss など)
- Smokeテスト:最低限壊れていないか(shape, NaNチェック)
smoke test: とりあえず壊れてないか最低限だけ確認するための超ライトなテスト。家電の電源を入れて、煙(smoke)が出ないかだけ確認するテストが由来。 - 性能テスト:速度・GPU/CPUメモリ・スループット
- 再現性/精度:toyデータでlossやmetric確認
- Agent/IF:APIやツール連携、前処理/後処理
- smokeテストのみ:
pytest -m smoke@pytest.mark.smoke でマークされたテストのみ実行。
- 性能テスト(GPUのみ):
pytest -m "perf and gpu"@pytest.mark.perf かつ @pytest.mark.gpu でマークされたテストのみ実行。
- 全テスト:
pytest- pytest: テストフレームワーク
- psutil: process and system utilities
Pythonでプロセスやシステム情報(CPU、メモリ、ディスク、ネットワークなど)を簡単に取得できるライブラリ。
LLM開発、あるいは伝統的な機械学習の開発において、学習や推論の効率化は非常に重要なトピックです。 私は最近、unittestやpytestといったpythonの標準ツールを学びました。 私はこれまで、AIの基盤モデル(8Bサイズではありますが、、、)の開発、yoloレベルのAI開発を経験している中で、学習・推論・評価の一連のプロセスをいかにして高速化できるか、めちゃくちゃ頭を悩ませてきました。 flash-attentionやその他の高速化技法を組み込み、学習・推論・評価の効率は改善されたのか?否か?GPUメモリの使用量はどうなったのか?とか、すべてすべて手動テストしていたということに気づきました!!! 今、unittestやpytestを知りましたが、過去私がさんざん頭を悩ませてきたAI開発におけるGPU使用量、処理速度、メモリ使用量といった問題を、実装に例えばflash-attentionを組み込んだ時、前後でこれらがどう改善されたかをpytestコマンド一つで一発で丸わかりになったら、これほど素晴らしいことはございません。 正直、AI開発においては単体テスト、結合テストなんてものは実装を進めている中で自然と実施されているものであり、学習・推論・は単体テスト、結合テストがカバーする範囲がうまくいっていると知っていなければそもそも実行なんぞできません。なので、わざわざ単体テスト、結合テストを書く必要性は薄いです。 pytestを使ったとして、LLMのみならず、yoloのような伝統的な機械学習モデルの開発、最近だとAPIやローカルLLMを使ったAI Agent開発など、AI開発全体で使えるテストの開発、実装フォーマットを僕に教えてください。