🔥

🚀 LogLLMの紹介:LLMを使って機械学習実験のログを自動化 (現在開発中)

2024/08/23に公開


あなたのMLスクリプトが手動でログを取るには煩雑すぎると感じていませんか? 😵
ご安心ください—ここに探し求めていたシームレスな解決策があります! ✨

このパッケージは、GPT4o-miniを使用してPythonスクリプト全体から実験条件を自動で抽出し、Weights & Biases (W&B) にログを記録する機能を提供します。

🌐 プロジェクトウェブサイト | 💬 Discordコミュニティ

https://github.com/shure-dev/logllm


機能

🔍 自動抽出: GPT4oを使用して、Jupyter Notebookファイルからコードを簡単に抽出し、ログをWeights & Biases (W&B)に保存して、シームレスなトラッキングと分析を可能にします。

🔍 自然言語によるWandBクエリ: WandBログからの情報を自然言語クエリで簡単に抽出・表示できます。例えば、「これまでの決定木で最も効果的だった方法は何ですか?」といった質問に対し、関連するデータを即座に取得できます。


⚙️ インストール

パッケージをインストールするには、以下のコマンドをターミナルで実行してください:

git clone https://github.com/shure-dev/logllm.git
pip install -e .

このコマンドでパッケージを編集可能なモードでインストールできますので、コードを修正しても再インストールの必要がありません。


🚀 使用方法

ここでは、パッケージの使用例を簡単にご紹介します:

export OPENAI_API_KEY="your-openai-api-key"
wandb login

サンプルノートブックスクリプト: sample-script.ipynb

###
# ここにあなたの機械学習スクリプトを記述します。
# ここから実験条件が抽出されます。
###

from logllm import log_llm

notebook_path = "sample-script.ipynb"  # ログを取る対象のファイル

log_llm(notebook_path)

🧠 動作の仕組み: シンプルでパワフル!

LLM(私たちのプロンプト + あなたのMLスクリプト) = 抽出された実験条件

私たちのプロンプト:

あなたは高度な機械学習実験デザイナーです。
実験条件と結果をすべて抽出し、W&B API経由でログするためのJSONレスポンスを作成してください。
他のパラメータをログに追加したい場合は、オリジナルのパラメータをJSONレスポンスに含めてください。
与えられたスクリプトで見つけられるすべての情報をint、bool、またはfloat値として抽出してください。
もし条件をint、bool、またはfloat値で表現できない場合は、自然言語のリストを使用してください。
精度を向上させるためのアドバイスも提供してください。
自然言語を使用する場合、回答はできるだけ簡潔にしてください。

あなたのMLスクリプト: svc-sample.ipynb

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

iris = datasets.load_iris()

X = iris.data[iris.target != 2]
y = iris.target[iris.target != 2]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

model = SVC(kernel='linear')
model.fit(X_train, y_train)

y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)

print(f"Accuracy: {accuracy:.2f}")

抽出された実験条件:

{
    "method": "SVC",
    "dataset": "Iris",
    "task": "classification",
    "is_advanced_method": false,
    "is_latest_method": "",
    "accuracy": 1.00,
    "kernel": "linear",
    "test_size": 0.2,
    "random_state": 42,
    "condition_as_natural_langauge": [
        "SVCモデルに線形カーネルを使用。",
        "Irisデータセットからクラス2を除外。",
        "データを80%のトレーニングと20%のテストに分割。"
    ],
    "advice_to_improve_acc": [
        "データセットの一貫性を確認。",
        "検証のためにクロスバリデーションを検討。"
    ]
}

📄 デモコードをチェック


🤝 コントリビューション

貢献は大歓迎です!提案や改善点があれば、ぜひイシューやプルリクエストを提出してください。


📜 ライセンス

このプロジェクトはMITライセンスの下でライセンスされています。


GPT4で日本語に翻訳したため、不自然なところがあります。

Discussion