Skip to content

ClasCat® AI Research

クラスキャット – 生成 AI, AI エージェント, MCP

Menu
  • ホーム
    • ClassCat® AI Research ホーム
    • クラスキャット・ホーム
  • OpenAI API
    • OpenAI Python ライブラリ 1.x : 概要
    • OpenAI ブログ
      • GPT の紹介
      • GPT ストアの紹介
      • ChatGPT Team の紹介
    • OpenAI platform 1.x
      • Get Started : イントロダクション
      • Get Started : クイックスタート (Python)
      • Get Started : クイックスタート (Node.js)
      • Get Started : モデル
      • 機能 : 埋め込み
      • 機能 : 埋め込み (ユースケース)
      • ChatGPT : アクション – イントロダクション
      • ChatGPT : アクション – Getting started
      • ChatGPT : アクション – アクション認証
    • OpenAI ヘルプ : ChatGPT
      • ChatGPTとは何ですか?
      • ChatGPT は真実を語っていますか?
      • GPT の作成
      • GPT FAQ
      • GPT vs アシスタント
      • GPT ビルダー
    • OpenAI ヘルプ : ChatGPT > メモリ
      • FAQ
    • OpenAI ヘルプ : GPT ストア
      • 貴方の GPT をフィーチャーする
    • OpenAI Python ライブラリ 0.27 : 概要
    • OpenAI platform
      • Get Started : イントロダクション
      • Get Started : クイックスタート
      • Get Started : モデル
      • ガイド : GPT モデル
      • ガイド : 画像生成 (DALL·E)
      • ガイド : GPT-3.5 Turbo 対応 微調整
      • ガイド : 微調整 1.イントロダクション
      • ガイド : 微調整 2. データセットの準備 / ケーススタディ
      • ガイド : 埋め込み
      • ガイド : 音声テキスト変換
      • ガイド : モデレーション
      • ChatGPT プラグイン : イントロダクション
    • OpenAI Cookbook
      • 概要
      • API 使用方法 : レート制限の操作
      • API 使用方法 : tiktoken でトークンを数える方法
      • GPT : ChatGPT モデルへの入力をフォーマットする方法
      • GPT : 補完をストリームする方法
      • GPT : 大規模言語モデルを扱う方法
      • 埋め込み : 埋め込みの取得
      • GPT-3 の微調整 : 分類サンプルの微調整
      • DALL-E : DALL·E で 画像を生成して編集する方法
      • DALL·E と Segment Anything で動的マスクを作成する方法
      • Whisper プロンプティング・ガイド
  • Gemini API
    • Tutorials : クイックスタート with Python (1) テキスト-to-テキスト生成
    • (2) マルチモーダル入力 / 日本語チャット
    • (3) 埋め込みの使用
    • (4) 高度なユースケース
    • クイックスタート with Node.js
    • クイックスタート with Dart or Flutter (1) 日本語動作確認
    • Gemma
      • 概要 (README)
      • Tutorials : サンプリング
      • Tutorials : KerasNLP による Getting Started
  • Keras 3
    • 新しいマルチバックエンド Keras
    • Keras 3 について
    • Getting Started : エンジニアのための Keras 入門
    • Google Colab 上のインストールと Stable Diffusion デモ
    • コンピュータビジョン – ゼロからの画像分類
    • コンピュータビジョン – 単純な MNIST convnet
    • コンピュータビジョン – EfficientNet を使用した微調整による画像分類
    • コンピュータビジョン – Vision Transformer による画像分類
    • コンピュータビジョン – 最新の MLPモデルによる画像分類
    • コンピュータビジョン – コンパクトな畳込み Transformer
    • Keras Core
      • Keras Core 0.1
        • 新しいマルチバックエンド Keras (README)
        • Keras for TensorFlow, JAX, & PyTorch
        • 開発者ガイド : Getting started with Keras Core
        • 開発者ガイド : 関数型 API
        • 開発者ガイド : シーケンシャル・モデル
        • 開発者ガイド : サブクラス化で新しい層とモデルを作成する
        • 開発者ガイド : 独自のコールバックを書く
      • Keras Core 0.1.1 & 0.1.2 : リリースノート
      • 開発者ガイド
      • Code examples
      • Keras Stable Diffusion
        • 概要
        • 基本的な使い方 (テキスト-to-画像 / 画像-to-画像変換)
        • 混合精度のパフォーマンス
        • インペインティングの簡易アプリケーション
        • (参考) KerasCV – Stable Diffusion を使用した高性能画像生成
  • TensorFlow
    • TF 2 : 初級チュートリアル
    • TF 2 : 上級チュートリアル
    • TF 2 : ガイド
    • TF 1 : チュートリアル
    • TF 1 : ガイド
  • その他
    • 🦜️🔗 LangChain ドキュメント / ユースケース
    • Stable Diffusion WebUI
      • Google Colab で Stable Diffusion WebUI 入門
      • HuggingFace モデル / VAE の導入
      • LoRA の利用
    • Diffusion Models / 拡散モデル
  • クラスキャット
    • 会社案内
    • お問合せ
    • Facebook
    • ClassCat® Blog
Menu

HuggingFace Transformers 4.29 : Tutorials : スクリプトによる訓練

Posted on 06/09/2023 by Sales Information

HuggingFace Transformers 4.29 : Tutorials : スクリプトによる訓練 (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 06/07/2023 (v4.29.1)

* 本ページは、HuggingFace Transformers の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

  • Tutorials : Train with a script

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

クラスキャット 人工知能 研究開発支援サービス

◆ クラスキャット は人工知能・テレワークに関する各種サービスを提供しています。お気軽にご相談ください :

  • 人工知能研究開発支援
    1. 人工知能研修サービス(経営者層向けオンサイト研修)
    2. テクニカルコンサルティングサービス
    3. 実証実験(プロトタイプ構築)
    4. アプリケーションへの実装

  • 人工知能研修サービス

  • PoC(概念実証)を失敗させないための支援
◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール。
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。

◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。

  • 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
  • sales-info@classcat.com  ;  Web: www.classcat.com  ;   ClassCatJP

 

HuggingFace Transformers 4.29 : Tutorials : スクリプトによる訓練

🤗 Transformers ノートブック と併せて、PyTorch, TensorFlow, or JAX/Flax によりタスクに対するモデルを訓練する方法を実演するサンプルスクリプトもあります。

また、研究プロジェクト で使用したスクリプトと殆どコミュニティが貢献した レガシーサンプル もあります。これらのスクリプトは積極的には保守されておらず、ライブラリの最新バージョンとは多くの場合非互換な傾向にある 🤗 Transformers の特定のバージョンを必要とします。

サンプルプログラムはすべての問題でそのまま動作することは想定されておらず、スクリプトを解こうとしている問題に適応させる必要があるかもしれません。これを手助けするために、殆どのスクリプトはデータが前処理された方法を完全に公開し、貴方のユースケースに必要なようにそれを編集することを可能にしています。

サンプルスクリプトで実装したいどのような機能についても、Pull Request を提出する前にそれを フォーラム や issue で議論してください。バグ修正は歓迎する一方で、可読性を犠牲にしてより多くの機能を追加する Pull Request をマージする可能性は低いです。

このガイドはサンプルの要約訓練スクリプトを PyTorch と TensorFlow で実行する方法を実演します。すべてのサンプルは特に指定がなければ両方のフレームワークで動作することが想定されています。

 

セットアップ

最新版のサンプルスクリプトを成功的に実行するため、新しい仮想環境で 🤗 Transformers をソースからインストールする必要があります :

git clone https://github.com/huggingface/transformers
cd transformers
pip install .

(訳注 : サンプルスクリプトの古いバージョンの使用方法については 原文 参照)

After you’ve setup the correct library version, navigate to the example folder of your choice and install the example specific requirements:

pip install -r requirements.txt

 

スクリプトの実行

このサンプルスクリプトは 🤗 Datasets ライブラリからデータセットをダウンロードして前処理します。それからスクリプトは要約をサポートするアーキテクチャ上で Trainer によりデータセットを微調整します。以下の例は T5-small を CNN/DailyMail データセットで微調整をする方法を示しています。T5 モデルはそれが訓練された方法に従って追加の source_prefix 引数を必要とします。このプロンプトは T5 にこれが要約タスクであることを知らせます。

python examples/pytorch/summarization/run_summarization.py \
    --model_name_or_path t5-small \
    --do_train \
    --do_eval \
    --dataset_name cnn_dailymail \
    --dataset_config "3.0.0" \
    --source_prefix "summarize: " \
    --output_dir /tmp/tst-summarization \
    --per_device_train_batch_size=4 \
    --per_device_eval_batch_size=4 \
    --overwrite_output_dir \
    --predict_with_generate

 

このサンプルスクリプトは 🤗 Datasets ライブラリからデータセットをダウンロードして前処理します。それからスクリプトは要約をサポートするアーキテクチャ上で Keras を使用してデータセットを微調整します。以下の例は T5-small を CNN/DailyMail データセットで微調整をする方法を示しています。T5 モデルはそれが訓練された方法に従って追加の source_prefix 引数を必要とします。このプロンプトは T5 にこれが要約タスクであることを知らせます。

python examples/tensorflow/summarization/run_summarization.py  \
    --model_name_or_path t5-small \
    --dataset_name cnn_dailymail \
    --dataset_config "3.0.0" \
    --output_dir /tmp/tst-summarization  \
    --per_device_train_batch_size 8 \
    --per_device_eval_batch_size 16 \
    --num_train_epochs 3 \
    --do_train \
    --do_eval

 

分散訓練と混合精度

Trainer は分散訓練と混合精度をサポートします、つまりそれをスクリプト内でも使用できます。これらの機能の両方を有効にするには :

  • fp16 引数を追加して混合精度を有効にします。
  • nproc_per_node 引数により使用する GPU 数を設定します。
python -m torch.distributed.launch \
    --nproc_per_node 8 pytorch/summarization/run_summarization.py \
    --fp16 \
    --model_name_or_path t5-small \
    --do_train \
    --do_eval \
    --dataset_name cnn_dailymail \
    --dataset_config "3.0.0" \
    --source_prefix "summarize: " \
    --output_dir /tmp/tst-summarization \
    --per_device_train_batch_size=4 \
    --per_device_eval_batch_size=4 \
    --overwrite_output_dir \
    --predict_with_generate

TensorFlow スクリプトは分散訓練用の MirroredStrategy を使用し、訓練スクリプトに追加の引数を追加する必要はありません。TensorFlow スクリプトは利用可能であれば複数の GPU をデフォルトで使用します。

 

スクリプトを TPU で実行

テンソル処理ユニット (TPU, Tensor Processing Units) はパフォーマンスを加速するために特別に設計されています。PyTorch は XLA 深層学習コンパイラ (詳細は こちら を参照) により TPU をサポートしています。TPU を使用するには、xla_spawn.py スクリプトを起動して、num_cores 引数を使用して利用したい TPU コア数を設定します。

python xla_spawn.py --num_cores 8 \
    summarization/run_summarization.py \
    --model_name_or_path t5-small \
    --do_train \
    --do_eval \
    --dataset_name cnn_dailymail \
    --dataset_config "3.0.0" \
    --source_prefix "summarize: " \
    --output_dir /tmp/tst-summarization \
    --per_device_train_batch_size=4 \
    --per_device_eval_batch_size=4 \
    --overwrite_output_dir \
    --predict_with_generate

 

テンソル処理ユニット (TPU, Tensor Processing Units) はパフォーマンスを加速するために特別に設計されています。TensorFlow スクリプトは TPU 上の訓練用に TPUStrategy を利用しています。TPU を使用するには TPU リソースの名前を tpu 引数に渡します。

python run_summarization.py  \
    --tpu name_of_tpu_resource \
    --model_name_or_path t5-small \
    --dataset_name cnn_dailymail \
    --dataset_config "3.0.0" \
    --output_dir /tmp/tst-summarization  \
    --per_device_train_batch_size 8 \
    --per_device_eval_batch_size 16 \
    --num_train_epochs 3 \
    --do_train \
    --do_eval

 

🤗 Accelerate でスクリプトを実行

🤗 Accelerate は PyTorch 専用ライブラリで、PyTorch 訓練ループへの完全な可視性を維持しながら、数種類のセットアップ (CPU-only, マルチ GPU, TPU) でモデルを訓練するための統一された手法を提供します。もしまだならば 🤗 Accelerate を確実にインストールしてください :

Note: As Accelerate is rapidly developing, the git version of accelerate must be installed to run the scripts

pip install git+https://github.com/huggingface/accelerate

run_summarization スクリプトを実行する代わりに、run_summarization_no_trainer.py スクリプトを使用する必要があります。🤗 Accelerate がサポートするスクリプトはフォルダに task_no_trainer を含みます。configuration ファイルを作成してセーブする次のコマンドを実行することから始めます :

accelerate config

Test your setup to make sure it is configured correctly:

accelerate test

Now you are ready to launch the training:

accelerate launch run_summarization_no_trainer.py \
    --model_name_or_path t5-small \
    --dataset_name cnn_dailymail \
    --dataset_config "3.0.0" \
    --source_prefix "summarize: " \
    --output_dir ~/tmp/tst-summarization

 

カスタムデータセットの使用

要約 (用) スクリプトはカスタムデータセットが CSV か JSON Line ファイルである限りサポートします。貴方自身のデータセットを使用するとき、幾つかの追加引数を指定する必要があります :

  • train_file と validation_file は貴方の訓練と検証用ファイルへのパスを指定します。
  • text_column は要約する入力テキストです。
  • summary_column は出力するターゲットテキストです。

カスタムデータセットを使用する要約用スクリプトはこのようなものです :

python examples/pytorch/summarization/run_summarization.py \
    --model_name_or_path t5-small \
    --do_train \
    --do_eval \
    --train_file path_to_csv_or_jsonlines_file \
    --validation_file path_to_csv_or_jsonlines_file \
    --text_column text_column_name \
    --summary_column summary_column_name \
    --source_prefix "summarize: " \
    --output_dir /tmp/tst-summarization \
    --overwrite_output_dir \
    --per_device_train_batch_size=4 \
    --per_device_eval_batch_size=4 \
    --predict_with_generate

 

スクリプトのテスト

完結するに数時間がかかるかもしれない、データセット全体にコミットする前に想定するようにすべてが動作することを確認するために、スクリプトをデータセットサンプルの小さい数で実行するのは良い考えである場合が多いです。データセットをサンプルの最大数に切り捨てるために以下の引数を使用します :

  • max_train_samples
  • max_eval_samples
  • max_predict_samples
python examples/pytorch/summarization/run_summarization.py \
    --model_name_or_path t5-small \
    --max_train_samples 50 \
    --max_eval_samples 50 \
    --max_predict_samples 50 \
    --do_train \
    --do_eval \
    --dataset_name cnn_dailymail \
    --dataset_config "3.0.0" \
    --source_prefix "summarize: " \
    --output_dir /tmp/tst-summarization \
    --per_device_train_batch_size=4 \
    --per_device_eval_batch_size=4 \
    --overwrite_output_dir \
    --predict_with_generate

すべてのサンプルスクリプトが max_predict_samples 引数をサポートはしていません。スクリプトがこの引数をサポートしているか分からない場合は、確認のために -h 引数を追加してください :

examples/pytorch/summarization/run_summarization.py -h

 

チェックポイントから訓練を再開する

有効にするべきもう一つの役立つオプションは前のチェックポイントから訓練を再開するものです。これは、訓練が中断された場合、やり直すことなく中断したところから再開できることを確実にします。チェックポイントから訓練を再開するには 2 つの手法があります。

最初の方法は output_dir previous_output_dir 引数を使用して output_dir にストアされた最新チェックポイントから訓練を再開します。この場合、overwrite_output_dir は取り除くべきです :

python examples/pytorch/summarization/run_summarization.py
    --model_name_or_path t5-small \
    --do_train \
    --do_eval \
    --dataset_name cnn_dailymail \
    --dataset_config "3.0.0" \
    --source_prefix "summarize: " \
    --output_dir /tmp/tst-summarization \
    --per_device_train_batch_size=4 \
    --per_device_eval_batch_size=4 \
    --output_dir previous_output_dir \
    --predict_with_generate

2 番目の方法は resume_from_checkpoint path_to_specific_checkpoint 引数を使用して特定のチェックポイント・フォルダから訓練を再開します。

python examples/pytorch/summarization/run_summarization.py
    --model_name_or_path t5-small \
    --do_train \
    --do_eval \
    --dataset_name cnn_dailymail \
    --dataset_config "3.0.0" \
    --source_prefix "summarize: " \
    --output_dir /tmp/tst-summarization \
    --per_device_train_batch_size=4 \
    --per_device_eval_batch_size=4 \
    --overwrite_output_dir \
    --resume_from_checkpoint path_to_specific_checkpoint \
    --predict_with_generate

 

モデルを共有する

すべてのスクリプトは貴方の最終的なモデルを モデルハブ にアップロードすることができます。始める前に Hugging Face にログインしていることを確認してください :

huggingface-cli login

そしてスクリプトに push_to_hub 引数を追加します。この引数は貴方の Hugging Face ユーザ名と output_dir で指定されたフォルダ名を使用してレポジトリを作成します。

リポジトリに特定の名前を与えるには、それを追加するために push_to_hub_model_id 引数を使用します。レポジトリは貴方の名前空間に自動的にリストアップされます。

以下のサンプルはモデルを特定のレポジトリ名でアップロードする方法を示します :

python examples/pytorch/summarization/run_summarization.py
    --model_name_or_path t5-small \
    --do_train \
    --do_eval \
    --dataset_name cnn_dailymail \
    --dataset_config "3.0.0" \
    --source_prefix "summarize: " \
    --push_to_hub \
    --push_to_hub_model_id finetuned-t5-cnn_dailymail \
    --output_dir /tmp/tst-summarization \
    --per_device_train_batch_size=4 \
    --per_device_eval_batch_size=4 \
    --overwrite_output_dir \
    --predict_with_generate

 

以上



クラスキャット

最近の投稿

  • LangGraph on Colab : エージェント型 RAG
  • LangGraph : 例題 : エージェント型 RAG
  • LangGraph Platform : Get started : クイックスタート
  • LangGraph Platform : 概要
  • LangGraph : Prebuilt エージェント : ユーザインターフェイス

タグ

AutoGen (13) ClassCat Press Release (20) ClassCat TF/ONNX Hub (11) DGL 0.5 (14) Eager Execution (7) Edward (17) FLUX.1 (16) Gemini (20) HuggingFace Transformers 4.5 (10) HuggingFace Transformers 4.6 (7) HuggingFace Transformers 4.29 (9) Keras 2 Examples (98) Keras 2 Guide (16) Keras 3 (10) Keras Release Note (17) Kubeflow 1.0 (10) LangChain (45) LangGraph (22) MediaPipe 0.8 (11) Model Context Protocol (16) NNI 1.5 (16) OpenAI Agents SDK (8) OpenAI Cookbook (13) OpenAI platform (10) OpenAI platform 1.x (10) OpenAI ヘルプ (8) TensorFlow 2.0 Advanced Tutorials (33) TensorFlow 2.0 Advanced Tutorials (Alpha) (15) TensorFlow 2.0 Advanced Tutorials (Beta) (16) TensorFlow 2.0 Guide (10) TensorFlow 2.0 Guide (Alpha) (16) TensorFlow 2.0 Guide (Beta) (9) TensorFlow 2.0 Release Note (12) TensorFlow 2.0 Tutorials (20) TensorFlow 2.0 Tutorials (Alpha) (14) TensorFlow 2.0 Tutorials (Beta) (12) TensorFlow 2.4 Guide (24) TensorFlow Deploy (8) TensorFlow Get Started (7) TensorFlow Graphics (7) TensorFlow Probability (9) TensorFlow Programmer's Guide (22) TensorFlow Release Note (18) TensorFlow Tutorials (33) TF-Agents 0.4 (11)
2023年6月
月 火 水 木 金 土 日
 1234
567891011
12131415161718
19202122232425
2627282930  
« 5月   7月 »
© 2025 ClasCat® AI Research | Powered by Minimalist Blog WordPress Theme