AIエージェントに自作ツールを改良してもらおう

Ubuntu
スポンサーリンク

この記事は、Geminiとの相談結果が多分に含まれています。
利用する場合は、自己責任でお願いします。

記事の内容は以下のシステムでテストされています。
Ubuntu26.04.1LTS
Intel Core Ultra5 250K Plus
メインメモリ96GB(4800MT/s)
Intel Arc A770(16GB)

以前の記事(「Intel Arc A770で Strata を動かそう」と「Pi Coding Agentのインストール(Ubuntu編)」)でAIエージェントを動かす準備ができました。

今回はそのAIエージェントに自作ツール「BIP」を改良してもらおうと思います。
今回は詳細な導入記事ではなく「ただの雑談」なので、おおまかな流れだけ説明します。

BiM-VFIの弱点

「BiM-VFIを使ってフレームを補間する」ツールはrife-ncnn-vulkanと違って生成する画像フレームに滲みのようなものがあまりありません。
ただし、処理速度がVIPの30分の1くらいしかありませんでした。

これは元になった「https://github.com/KAIST-VICLab/BiM-VFI」がCUDA専用だったため、costvol.pyの中身を大幅に改変(というか大幅削除)したためでした。

今回はこのcostvol.pyの部分をIntel Arc用にエージェントに改造してもらいました。

Qwen3.8-Flash-Nextは優秀だけど未来が読めるわけではない

使ったモデルはQwen3.8-Flash-Next(q3-s)ですが、大変優秀です。
ですが、学習した時より未来の情報を持っているわけではありません。

そこで、costvol.pyの改造をしてもらうにあたって、最新のxpu事情をドキュメントとして渡して教科書にしてもらいます。

uv venv --python /usr/bin/python3
source .venv/bin/activate

# 安定版
uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/xpu

# ドキュメント抽出(xpu化用)--------------------------------------------------------------------------------
uv run python -c "import torch, pydoc; print(pydoc.render_doc(torch.xpu, renderer=pydoc.plaintext))" > torch_xpu_docs.txt
uv run python -c "import torch.xpu, pathlib, inspect; p = pathlib.Path(inspect.getfile(torch.xpu)); print(p.read_text())" > torch_xpu_interface.py

# torch.compile用 ------------------------------------------------------------------------------------------
# torch.compile 関数のシグネチャと引数仕様
uv run python -c "import torch, pydoc; print(pydoc.render_doc(torch.compile, renderer=pydoc.plaintext))" > docs_torch_compile.txt

# 現在の環境で利用可能なコンパイラバックエンド一覧
uv run python -c "import torch._dynamo as dynamo; print('Available Backends:', dynamo.list_backends())" > docs_dynamo_backends.txt

# Inductor(コンパイラエンジン)の詳細設定パラメータ一覧
uv run python -c "import torch._inductor.config, pydoc; print(pydoc.render_doc(torch._inductor.config, renderer=pydoc.plaintext))" > docs_inductor_config.txt

# OpenVINOバックエンド用 -----------------------------------------------------------------------------------
# OpenVINO パッケージのインストール
uv pip install openvino

# Arc A770 が OpenVINO から正しく認識されているかの確認(GPU.0 や GPU.1 等のデバイス名)
uv run python -c "import openvino as ov; core = ov.Core(); print('Available Devices:', core.available_devices); [print(d, '->', core.get_property(d, 'FULL_DEVICE_NAME')) for d in core.available_devices]" > docs_openvino_devices.txt

# openvino.torch のDocstring(backend='openvino' で指定可能な options 辞書の仕様など)
uv run python -c "import openvino.torch, pydoc; print(pydoc.render_doc(openvino.torch, renderer=pydoc.plaintext))" > docs_openvino_torch.txt

# openvino.torch の内部インターフェース実装コード
uv run python -c "import openvino.torch, pathlib, inspect; p = pathlib.Path(inspect.getfile(openvino.torch)); print(p.read_text())" > openvino_torch_interface.py

# triton.xpu用 ----------------------------------------------------------------------------------------------
# Triton パッケージのドキュメント抽出
uv run python -c "
try:
    import triton, pydoc
    print(pydoc.render_doc(triton, renderer=pydoc.plaintext))
except Exception as e:
    print('Triton Error:', e)
" > docs_triton.txt

# Triton のインストールパスと組み込みバックエンド一覧の抽出
uv run python -c "
try:
    import triton, inspect, pathlib
    p = pathlib.Path(inspect.getfile(triton)).parent
    print('Triton path:', p)
    backends_dir = p / 'backends'
    if backends_dir.exists():
        print('Available backends:', [b.name for b in backends_dir.iterdir() if b.is_dir()])
except Exception as e:
    print('Triton Inspect Error:', e)
" > docs_triton_backends.txt

以上のスクリプトでドキュメントを作成します。
これはGeminiに教えてもらって作りました。

いざ実行

自分はエージェントが頑張ってくれている間、4時間ほど寝ることにしました。
3直交代制はつらい・・・。


そして4時間後・・・。

起きたら出来上がっていました。
このあといくつかの不具合をエージェントと相談しながら解決して普通に動作するところまできました。


倍以上の速度向上を果たしました。


出来上がったテスト動画。

出典:Girls Und Panzer: TV Collection

技術公開を目的としており、動画の視聴を目的としたものではありません。

最後に

いつかやりたいと思っていた高速化。
AIエージェントの登場で、思った以上にハードルが下がりました。
自分にエンジニアとしての知識があれば、もっと詰めた改良ができると思うのですが・・・。

今回の改良内容(ソース)は公開しないつもりです。
どうもA770の2次キャッシュ容量に最適化した改変となっているようで、他のGPUだとどんな問題が出るかわからない状態です。

ただ、改変自体はエージェントに渡せばできるので、興味がある方は自分でやってしまうと思います。
自分なりの改変をエージェントと一緒にやってみてはどうでしょうか?

今回は以上です。

コメント

タイトルとURLをコピーしました