ホームページ >テクノロジー周辺機器 >AI >Openai O1-Previewチュートリアル:機械学習プロジェクトの構築
このチュートリアルでは、ゼロから水質分類器アプリケーションを作成し、Dockerを使用してクラウドに展開します。
Openai O1モデルを調査し、その機能を理解することから始めます。次に、水質分類器アプリケーションを構築するための効果的なプロンプトを作成する前に、APIとChATGPTを介してモデルにアクセスし、O1-PreviewバージョンとO1-MINIバージョンの両方を実験します。
出力を受けたら、O1モデルから提供されたコードとファイルをプロジェクトフォルダーに追加し、Pythonコードをローカルに実行してロード、プリプロース、トレーニング、評価します。最後に、FastAPIアプリケーションを構築し、Dockerを使用して顔に展開します。
AIが初めての場合、AI Fundamentals Skill Trackは開始するのに最適な場所です。 ChatGPTや大規模な言語モデルなどの人気のあるAIトピックについて学ぶのに役立ちます。
O1-PREVIEWとO1-MINI
を開始しますこのセクションでは、複雑な問題を解決するためにそれらを使用する方法を学びます。
O1モデルへのアクセスチャットの完了のためにOpenai APIに精通している場合は、モデル名を「O1-Preview」に設定し、詳細なプロンプトを提供する必要があります。それはとても単純です。
chatgptでアクセスするには、モデル選択ドロップダウンオプションをクリックして、以下に示すように「O1-Preview」モデルを選択する必要があります。
from openai import OpenAI client = OpenAI() response = client.chat.completions.create( model="o1-preview", messages=[ { "role": "user", "content": "Create an SQL database from scratch, including guides on usage and code everything in Python." } ] ) print(response.choices[0].message.content)
chatgpt
でo1-previewモデルを使用します
O1モデルのプロンプトは異なります。その力を完全に実現するには、複数の指示または詳細な質問を提供する必要があります。最適な答えを生成するには、長く複雑な指示が必要です。
私はスペインのフリーランサーであり、米国を拠点とする会社で働いています。過去1年間、私は120,000米ドルを獲得しており、借りている税金の額を計算する必要があります。 8か月前にスペインに引っ越したことを考慮してください。
応答にはほぼ30秒かかりましたが、応答が詳細になりました。それには、スペイン政府にどれだけ借りているかを決定するために、数学的方程式、税務情報、および必要なすべての詳細が含まれていました。
応答は次の部分に分割されました
概要セクションのレビューでは、政府におおよその税金を提供してくれますが、これは非常に役立ちます。
チャット応答のドロップダウンメニューをクリックして、一連の思考と意思決定を表示できます。
あなたの質問に回答する前に、モデルが彼の文脈、税の影響、税金ブラケットを理解していることがわかります。
プロンプト:「
Pythonフレームワークを使用して、データサイエンス履歴書の静的Webサイトを作成してください。」適切な履歴書Webサイトを作成しただけでなく、GitHubページで無料で公開する方法に関するガイダンスも提供しました。
応答は次の部分に分割されました
前提条件
ペリカン
1。プロンプトエンジニアリング
すべてのプロジェクト指令がモデルに提供されることを確認したいため、迅速なエンジニアリングにより多くの時間を費やします。
プロンプト:「私のプロジェクトマネージャーは、https://www.kaggle.com/datasets/adityakadiwal/water-potabilityで利用可能なKaggle Datasetを使用して水質アプリケーションの開発を任されています。非常に正確なモデルを構築できるように、ファイル、Pythonパッケージ、およびコードに必要なすべての情報を提供してください。
目標は、全体的な精度90%を達成することです。プロジェクトを構築するための手順に従って:
1。 APIを使用してKaggleからデータセットをロードし、データフォルダーに解凍します。
2。データを事前に処理し、いくつかのデータ分析を実行します。メトリックフォルダーに分析の数値とファイルを保存します。
3。 Scikit-Learnフレームワークを使用してモデルをトレーニングします。実験を追跡し、モデルファイルとメタデータを保存してください。 Skopsライブラリを使用してモデルを保存します。4。詳細なモデル評価を実行し、結果を保存します
5。ユーザーから画像を取得し、水の品質を予測するFASTAPIアプリケーションを作成します。
6。 Jinja2テンプレートを使用してユーザーインターフェイスを追加してください。7。 Dockerオプションを使用して、ハグのフェイスハブにアプリを展開します。
生成された応答により、データのロード、プリプロース、モデルのトレーニングと評価、FASTAPIアプリケーションの作成、ユーザーインターフェイスの作成、および展開するために必要なすべての情報が提供されました。問題は断片化されており、コードをコピーして貼り付けるためにPythonファイルとHTMLファイルを作成したいということです。
すべてのコードをPythonファイルとHTMLファイルに変換し、私たちの生活をさらに楽にします。
フォローアッププロンプト:「コードをPythonファイルに変換してください。」
ご覧のとおり、すべてのファイルとコードを含むプロジェクト構造があります。私たちがしなければならないのは、フォルダーとファイルを作成し、コードをコピーして貼り付けることだけです。
O1モデルは、プロジェクトディレクトリを設定するために必要なすべての情報を提供します。コードエディターを使用して、プロジェクトディレクトリ内でフォルダーとファイルを作成する必要があります。
次のフォルダーを作成します:
Kaggle APIを使用して水質Kaggleデータセットをロードし、データフォルダーに解凍します。
datadownload_data.py:
4。データを事前に処理し、データ分析を実行します
from openai import OpenAI client = OpenAI() response = client.chat.completions.create( model="o1-preview", messages=[ { "role": "user", "content": "Create an SQL database from scratch, including guides on usage and code everything in Python." } ] ) print(response.choices[0].message.content)Preprocessing Pythonファイルは、データをロードし、クリーンし、欠落データを処理し、スケーリングし、スケーラーと前処理されたデータセットを保存します。また、データ分析を実行し、メトリックとデータの視覚化を保存します。
datapreprocess_data.py:
import os # Ensure the data directory exists os.makedirs("data", exist_ok=True) # Download the dataset os.system("kaggle datasets download -d adityakadiwal/water-potability -p data --unzip")前処理されたデータとすべてのデータ分析が数値を記録しました。
5。モデルの構築とトレーニング
Dataset URL: https://www.kaggle.com/datasets/adityakadiwal/water-potability License(s): CC0-1.0 Downloading water-potability.zip to data 100%|████████████████████████████████████████████████████████████████████████████████| 251k/251k [00:00<00:00, 304kB/s] 100%|████████████████████████████████████████████████████████████████████████████████| 251k/251k [00:00<00:00, 303kB/s]トレーニングスクリプトは、前処理されたデータをロードし、それを使用してランダムフォレスト分類器をトレーニングします。その後、スコープはモデルを保存し、実験を手動で追跡し、モデルメタデータをJSONファイルとして保存するために使用されます。
import os import pandas as pd import seaborn as sns import matplotlib.pyplot as plt from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler import joblib # Create directories if they don't exist os.makedirs("metrics", exist_ok=True) os.makedirs("models", exist_ok=True) # Load the dataset data = pd.read_csv("data/water_potability.csv") # Check for missing values and save the summary missing_values = data.isnull().sum() missing_values.to_csv("metrics/missing_values.csv") # Statistical summary stats = data.describe() stats.to_csv("metrics/data_statistics.csv") # Pair plot sns.pairplot(data, hue="Potability") plt.savefig("metrics/pairplot.png") # Correlation heatmap plt.figure(figsize=(10, 8)) sns.heatmap(data.corr(), annot=True) plt.savefig("metrics/correlation_heatmap.png") # Handle missing values imputer = SimpleImputer(strategy="mean") data_imputed = pd.DataFrame(imputer.fit_transform(data), columns=data.columns) # Feature scaling scaler = StandardScaler() features = data_imputed.drop("Potability", axis=1) target = data_imputed["Potability"] features_scaled = scaler.fit_transform(features) # Save the scaler joblib.dump(scaler, "models/scaler.joblib") # Save preprocessed data preprocessed_data = pd.DataFrame(features_scaled, columns=features.columns) preprocessed_data["Potability"] = target preprocessed_data.to_csv("metrics/preprocessed_data.csv", index=False)srctrain_model.py:
トレーニングスクリプトは、以下に示すように、モデルファイルとメタデータを生成します。
6。モデルの評価
モデル評価スクリプトは、処理されたデータと保存されたモデルをロードして、分類レポート、混乱マトリックス、ROC曲線、AUC、および全体的な精度を生成します。メトリックと図はすべてメトリックフォルダーに保存されています。
srcevaluate_model.py:$ python .\src\preprocess_data.py
from openai import OpenAI client = OpenAI() response = client.chat.completions.create( model="o1-preview", messages=[ { "role": "user", "content": "Create an SQL database from scratch, including guides on usage and code everything in Python." } ] ) print(response.choices[0].message.content)
import os # Ensure the data directory exists os.makedirs("data", exist_ok=True) # Download the dataset os.system("kaggle datasets download -d adityakadiwal/water-potability -p data --unzip")
全体的な精度はそれほど良くありません。ただし、O1モデルに精度を向上させるようにいつでも依頼できます。
Dataset URL: https://www.kaggle.com/datasets/adityakadiwal/water-potability License(s): CC0-1.0 Downloading water-potability.zip to data 100%|████████████████████████████████████████████████████████████████████████████████| 251k/251k [00:00<00:00, 304kB/s] 100%|████████████████████████████████████████████████████████████████████████████████| 251k/251k [00:00<00:00, 303kB/s]
メトリックフォルダーには、すべての保存されたモデル評価の数値とメトリックが含まれています。モデルのパフォーマンスを詳細に理解するために手動でレビューできます。
Fastapiチュートリアル:Fastapiを使用してFastapiフレームワークとプロジェクトで実装する方法について詳しく学習するための紹介をご覧ください。
HTMLに精通していない場合は、心配しないでください。コードをコピーして貼り付け、O1モデルを信頼するだけです。
apptemplatesform.html:
import os import pandas as pd import seaborn as sns import matplotlib.pyplot as plt from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler import joblib # Create directories if they don't exist os.makedirs("metrics", exist_ok=True) os.makedirs("models", exist_ok=True) # Load the dataset data = pd.read_csv("data/water_potability.csv") # Check for missing values and save the summary missing_values = data.isnull().sum() missing_values.to_csv("metrics/missing_values.csv") # Statistical summary stats = data.describe() stats.to_csv("metrics/data_statistics.csv") # Pair plot sns.pairplot(data, hue="Potability") plt.savefig("metrics/pairplot.png") # Correlation heatmap plt.figure(figsize=(10, 8)) sns.heatmap(data.corr(), annot=True) plt.savefig("metrics/correlation_heatmap.png") # Handle missing values imputer = SimpleImputer(strategy="mean") data_imputed = pd.DataFrame(imputer.fit_transform(data), columns=data.columns) # Feature scaling scaler = StandardScaler() features = data_imputed.drop("Potability", axis=1) target = data_imputed["Potability"] features_scaled = scaler.fit_transform(features) # Save the scaler joblib.dump(scaler, "models/scaler.joblib") # Save preprocessed data preprocessed_data = pd.DataFrame(features_scaled, columns=features.columns) preprocessed_data["Potability"] = target preprocessed_data.to_csv("metrics/preprocessed_data.csv", index=False)apptemplatesResult.html:
$ python .\src\preprocess_data.pyメインアプリケーションPythonファイルには、ホームと予測の2つのPython関数があります。 「ホーム」機能には、入力ボックスとボタンを含むウェルカムページが表示されます。 「予測」関数はユーザー入力を変換し、モデルを介して実行し、水が飲料であるかどうかを示す結果を表示します。
apptemplatesmain.py:
最初にアプリをローカルでテストして、実行中かどうかを確認します。
import os import json import skops.io as sio import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier # Load preprocessed data data = pd.read_csv("metrics/preprocessed_data.csv") features = data.drop("Potability", axis=1) target = data["Potability"] # Split the data X_train, X_test, y_train, y_test = train_test_split( features, target, test_size=0.2, random_state=42, stratify=target ) # Train the model model = RandomForestClassifier(n_estimators=200, random_state=42) model.fit(X_train, y_train) # Save the model using skops os.makedirs("models", exist_ok=True) sio.dump(model, "models/water_quality_model.skops") # Track experiments and save metadata metadata = { "model_name": "RandomForestClassifier", "parameters": model.get_params(), "training_score": model.score(X_train, y_train), } with open("models/metadata.json", "w") as f: json.dump(metadata, f, indent=4)
Uvicornを使用してPythonファイルを実行することにより、コピーしてブラウザに貼り付けることができるローカルアドレスを取得します。
$ python .\src\train_model.py注:ファイルの実行方法に関するすべての情報は、O1モデルによっても提供されます。
ご覧のとおり、アプリは正常に動作しています。
import os import json import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt from sklearn.metrics import ( classification_report, confusion_matrix, roc_auc_score, roc_curve, ) import skops.io as sio from sklearn.model_selection import train_test_split # Load preprocessed data data = pd.read_csv("metrics/preprocessed_data.csv") features = data.drop("Potability", axis=1) target = data["Potability"] # Split the data X_train, X_test, y_train, y_test = train_test_split( features, target, test_size=0.2, random_state=42, stratify=target ) # Load the model model = sio.load("models/water_quality_model.skops") # Predictions y_pred = model.predict(X_test) y_pred_proba = model.predict_proba(X_test)[:, 1] # Classification report report = classification_report(y_test, y_pred, output_dict=True) with open("metrics/classification_report.json", "w") as f: json.dump(report, f, indent=4) # Confusion matrix cm = confusion_matrix(y_test, y_pred) sns.heatmap(cm, annot=True, fmt="d") plt.title("Confusion Matrix") plt.ylabel("Actual Label") plt.xlabel("Predicted Label") plt.savefig("metrics/confusion_matrix.png") # ROC curve and AUC fpr, tpr, _ = roc_curve(y_test, y_pred_proba) roc_auc = roc_auc_score(y_test, y_pred_proba) plt.figure() plt.plot(fpr, tpr, label="AUC = %0.2f" % roc_auc) plt.plot([0, 1], [0, 1], "k--") plt.legend(loc="lower right") plt.xlabel("False Positive Rate") plt.ylabel("True Positive Rate") plt.title("Receiver Operating Characteristic") plt.savefig("metrics/roc_curve.png") # Overall accuracy accuracy = model.score(X_test, y_test) print(f"Overall Accuracy: {accuracy * 100:.2f}%")
ランダムな値を提供して、水質を確認し、予測ボタンを押してみましょう。
結果は驚くべきものです。水が飲めないことを示しています。
URLの後に「/docs」と入力してAPIをテストして結果を生成することにより、Fastapi Swagger UIにアクセスすることもできます。
Openai O1モデルは、hugging顔にアプリケーションを展開する方法を正常に学習するためのDockerコード、ガイド、および参照リンクを生成しました。
データサイエンスのDockerをお読みください:Dockerの仕組みを学ぶための紹介チュートリアル。 Dockerのセットアップ、Dockerコマンドの使用、Dockerizeの機械学習アプリケーション、業界全体のベストプラクティスに従う方法を学びます。最初に、Hugging Face Webサイトのプロフィール写真をクリックして、[新しいスペース]ボタンをクリックして新しいスペースを作成します。アプリ名を入力し、SDKタイプ(docker)を選択し、ライセンスタイプを選択し、「スペースの作成」を押します。
出典:顔を抱き締める
出典:水質分類器
次に、リポジトリをクローンする必要があります。
リポジトリ内で、アプリとモデルフォルダーを移動します。 dockerfileを作成し、次のコマンドを入力します。 O1モデルはコードを提供してくれました。ポート番号を7860に変更する必要があります。
dockerfile:
from openai import OpenAI client = OpenAI() response = client.chat.completions.create( model="o1-preview", messages=[ { "role": "user", "content": "Create an SQL database from scratch, including guides on usage and code everything in Python." } ] ) print(response.choices[0].message.content)pythonパッケージに情報を含むrecumporation.txtファイルを作成します。このファイルを使用して、クラウドサーバーに必要なすべてのPythonパッケージをダウンロードしてインストールします。
要件.txt:
これは、アプリリポジトリの外観です:
import os # Ensure the data directory exists os.makedirs("data", exist_ok=True) # Download the dataset os.system("kaggle datasets download -d adityakadiwal/water-potability -p data --unzip")
私たちのモデルは大きなファイル(&gt; 10mb)であるため、Git LFSを使用して追跡する必要があります。 git lfsをインストールし、拡張機能「.skops」ですべてのファイルを追跡します。
Dataset URL: https://www.kaggle.com/datasets/adityakadiwal/water-potability License(s): CC0-1.0 Downloading water-potability.zip to data 100%|████████████████████████████████████████████████████████████████████████████████| 251k/251k [00:00<00:00, 304kB/s] 100%|████████████████████████████████████████████████████████████████████████████████| 251k/251k [00:00<00:00, 303kB/s]すべての変更をステージングし、メッセージでコミットし、リモートサーバーにプッシュします。
顔を抱きしめてアプリページに移動すると、コンテナを構築し、必要なすべてのパッケージをインストールしていることがわかります。
import os import pandas as pd import seaborn as sns import matplotlib.pyplot as plt from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler import joblib # Create directories if they don't exist os.makedirs("metrics", exist_ok=True) os.makedirs("models", exist_ok=True) # Load the dataset data = pd.read_csv("data/water_potability.csv") # Check for missing values and save the summary missing_values = data.isnull().sum() missing_values.to_csv("metrics/missing_values.csv") # Statistical summary stats = data.describe() stats.to_csv("metrics/data_statistics.csv") # Pair plot sns.pairplot(data, hue="Potability") plt.savefig("metrics/pairplot.png") # Correlation heatmap plt.figure(figsize=(10, 8)) sns.heatmap(data.corr(), annot=True) plt.savefig("metrics/correlation_heatmap.png") # Handle missing values imputer = SimpleImputer(strategy="mean") data_imputed = pd.DataFrame(imputer.fit_transform(data), columns=data.columns) # Feature scaling scaler = StandardScaler() features = data_imputed.drop("Potability", axis=1) target = data_imputed["Potability"] features_scaled = scaler.fit_transform(features) # Save the scaler joblib.dump(scaler, "models/scaler.joblib") # Save preprocessed data preprocessed_data = pd.DataFrame(features_scaled, columns=features.columns) preprocessed_data["Potability"] = target preprocessed_data.to_csv("metrics/preprocessed_data.csv", index=False)出典:水質分類器
数分後、アプリは使用できます。ローカルアプリに似ています。サンプル値を提供し、結果を生成してみましょう。
$ python .\src\preprocess_data.py
出典:水質分類器
私たちのアプリは完全に機能しており、期待される結果が生成されました。
出典:水質分類器
output:
from openai import OpenAI client = OpenAI() response = client.chat.completions.create( model="o1-preview", messages=[ { "role": "user", "content": "Create an SQL database from scratch, including guides on usage and code everything in Python." } ] ) print(response.choices[0].message.content)
すべてのプロジェクトファイル、データ、モデル、およびメタデータは、Kingabzpro/Water-App GitHubリポジトリで入手できます。
著者の意見AIモデルを使用して機械学習プロジェクトを構築するのは簡単ですが、キャリアにしたい場合は、これらのモデルの仕組みを理解する必要があります。これがなければ、問題を修正したり、特定のビジネスニーズにモデルを適用するのは難しい場合があります。この理解を得るために、初心者はPythonのキャリアトラックで機械学習科学者を取ることをお勧めします。さまざまな種類の機械学習モデルを構築および改善する方法を教えるための21コースと3つのプロジェクトが含まれています。o1-previewモデルはGPT-4oよりもはるかに優れています。命令に完全に続き、バグがないため、生成するコードは使用できます。機械学習アプリを構築するとき、私はわずかな変更を行うだけで、約5%でした。最良の部分は、AIモデルの意思決定からも学んだことです。なぜそれが特定の選択をしたのかを理解してください。 このチュートリアルでは、OpenaiのO1推論モデルがどれほど強力かを見てきました。コードにいくつかの変更を加えた完全な機械学習プロジェクトを構築しましたが、すぐに機能しました。モデルはすべてのコマンドを完全に処理し、フォローアップの指示を必要とせずに素晴らしい結果を生み出しました。 現在、O1-PreviewやO1-Miniなど、O1モデルの小さなバージョンにアクセスできます。将来的には、完全なO1モデルにアクセスできます。これは、複雑なプロジェクトの構築にさらに優れています。重要なのは、モデルを最大限に活用するために適切な質問をすることに取り組むことです。
以上がOpenai O1-Previewチュートリアル:機械学習プロジェクトの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。