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 : Get Started : クイック・ツアー

Posted on 05/21/2023 by Sales Information

HuggingFace Transformers 4.29 : Get Started : クイック・ツアー (翻訳/解説)

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

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

  • Get Started : Quick tour

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

 

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

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

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

  • 人工知能研修サービス

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

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

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

 

HuggingFace Transformers 4.29 : Get Started : クイック・ツアー

Get up and running with Transformers! 貴方が開発者であろうとヘビーユーザであろうと、このクイックツアーは始めるのに役立ち、推論のために pipeline() を使う方法、AutoClass で事前訓練済みモデルとプリプロセッサをどのようにロードするか、そして PyTorch か TensorFlow でモデルをどのように素早く訓練するかを示します。あなたが初心者であるならば、ここで紹介されるコンセプトの詳細な說明のためにチュートリアルや コース を次に確認することを勧めます。

始める前に、すべての必要なライブラリがインストールされていることを確認してください :

!pip install transformers datasets

好みの機械学習フレームワークをインストールする必要もあります :

pip install torch

pip install tensorflow

 

パイプライン

pipeline() は推論用の事前訓練済みモデルを利用する最も簡単で早い方法です。様々なモダリティに渡る多くのタスクに対して pipeline() をそのまま利用できます、それらの幾つかは以下のテーブルで示されます :

利用可能なタスクの完全なリストについては、パイプライン API リファレンス を確認してください。

 

  • (パイプライン識別子) pipeline(task=“sentiment-analysis”) – (モダリティ) NLP – (タスク) テキスト分類 : 与えられたテキストのシークエンスにラベルを割り当てる

  • pipeline(task=“text-generation”) – NLP – テキスト生成 : プロンプトが与えられたときテキストを生成する

  • pipeline(task=“summarization”) – NLP – 要約 : テキストのシークエンスかドキュメントの要約を生成する

  • pipeline(task=“image-classification”) – コンピュータビジョン – 画像分類 : 画像にラベルを割り当てる

  • pipeline(task=“image-segmentation”) – コンピュータビジョン – 画像セグメンテーション : 画像の各個別のピクセルにラベルを割り当てる (セマンティック, パノラマ (panoptic), インスタンスセグメンテーションをサポート)

  • pipeline(task=“object-detection”) – コンピュータビジョン – 物体検出 : 画像のオブジェクトの境界ボックスとクラスを予測する

  • pipeline(task=“audio-classification”) – 音声 – 音声分類 : 音声データにラベルを割り当てる

  • pipeline(task=“automatic-speech-recognition”) – 音声 – 自動発話認識 : 発話をテキストに文字起こしする。

  • pipeline(task=“vqa”) – マルチモーダル – 視覚的質問応答 (Visual question answering) : 画像と質問が与えられたとき、画像について質問に答える

  • pipeline(task=“document-question-answering”) – マルチモーダル – 文書質問応答 : 画像と質問が与えられたとき、文書について質問に答える

  • pipeline(task=“image-to-text”) – マルチモーダル – 画像キャプショニング : 与えられた画像に対するキャプションを生成する

 
pipeline() のインスタンスを作成してそれをそのために使用したいタスクを指定することから始めましょう。このガイドでは、例としてセンチメント分析のために pipeline() を使用します :

from transformers import pipeline

classifier = pipeline("sentiment-analysis")

pipeline はセンチメント分析のためのデフォルトの事前訓練済みモデルとトークナイザーをダウンロードしてキャッシュします。そしてターゲットテキストで分類器を使用できます :

classifier("We are very happy to show you the 🤗 Transformers library.")
[{'label': 'POSITIVE', 'score': 0.9998}]

一つ以上の入力を持つ場合、入力をリストとして辞書のリストを返す pipeline() に渡します :

results = classifier(["We are very happy to show you the 🤗 Transformers library.", "We hope you don't hate it."])
for result in results:
    print(f"label: {result['label']}, with score: {round(result['score'], 4)}")
label: POSITIVE, with score: 0.9998
label: NEGATIVE, with score: 0.5309

pipeline() はまた貴方が好む任意のタスクについてデータセット全体に対してイテレートできます。
このサンプルのために、タスクとして自動発話認識を選択しましょう :

import torch
from transformers import pipeline

speech_recognizer = pipeline("automatic-speech-recognition", model="facebook/wav2vec2-base-960h") 

イテレートしたいデータセット (詳細は 🤗 Datasets クイックスタート 参照) をロードします。例えば、MInDS-14 データセットをロードしましょう :

from datasets import load_dataset, Audio

dataset = load_dataset("PolyAI/minds14", name="en-US", split="train")

データセットのサンプリングレートが facebook/wav2vec2-base-960h がその上で訓練されたサンプリングレートに一致していることを確かにする必要があります :

dataset = dataset.cast_column("audio", Audio(sampling_rate=speech_recognizer.feature_extractor.sampling_rate))

“audio” カラムを呼び出すとき音声ファイルは自動的にロードされて再サンプリングされます。最初の 4 つのサンプルから raw waveform 配列を抽出してそれをリストとしてパイプラインに渡します :

result = speech_recognizer(dataset[:4]["audio"])
print([d["text"] for d in result])

(音声やビジョンでのような) 入力が大きい大規模なデータセットについては、総ての入力をメモリにロードするリストの代わりに generator を渡すことを望むでしょう。詳細は パイプライン API リファレンス を見てください。

 

パイプラインで別のモデルとトークナイザーを利用する

pipeline() は ハブ から任意のモデルを供給できるので、他のユースケースに pipeline() を適応させることは簡単です。例えば、フランス語テキストを扱えるモデルを望む場合、適切なモデルに対してフィルタリングするためにハブでタグを使用します。フィルタリングされたトップの結果はセンチメント分析のために再調整されたマルチリンガル BERT モデル を返し、貴方はフランス語テキストのために利用できます :

model_name = "nlptown/bert-base-multilingual-uncased-sentiment"

 

事前訓練済みモデルと関連するトークナイザーをロードするために AutoModelForSequenceClassification と AutoTokenizer を使用します (AutoClass の詳細は次のセクション) :

from transformers import AutoTokenizer, AutoModelForSequenceClassification

model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

 

事前訓練済みモデルと関連するトークナイザーをロードするために TFAutoModelForSequenceClassification と AutoTokenizer を使用します (TFAutoClass の詳細は次のセクション) :

from transformers import AutoTokenizer, TFAutoModelForSequenceClassification

model = TFAutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

 
そして pipeline() でモデルとトークナイザーを指定して、フランス語テキストに分類器を適用できます :

classifier = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)
classifier("Nous sommes très heureux de vous présenter la bibliothèque 🤗 Transformers.")
[{'label': '5 stars', 'score': 0.7273}]

貴方のユースケースのためのモデルを見つけられない場合、貴方のデータで事前訓練済みモデルを再調整する必要があります。その方法を学習するには 再調整チュートリアル を見てください。最後に、事前訓練済みモデルを再調整した後には、機械学習をすべての人に民主化するためにそのモデルをハブでコミュニティと 共有する ことを考えてください!🤗

 

AutoClass

内部的には、AutoModelForSequenceClassification と AutoTokenizer クラスは上記で使用した pipeline() を駆動するために一緒に動作しています。AutoClass は事前訓練済みモデルのアーキテクチャをその名前かパスから自動的に取得するショートカットです。タスクのための適切な AutoClass と関連する前処理クラスを選択する必要があるだけです。

前のセクションからのサンプルに戻り pipeline() の結果を複製するために AutoClass をどのように使用できるかを見ましょう。

 

AutoTokenizer

トークナイザーはモデルへの入力としてテキストを数値の配列に前処理する役割を負います。単語を分割する方法や単語を分割するレベルを含む、トークン化プロセスを規定する複数のルールがあります (トークン化については トークナイザー要約 で更に学習してください)。覚えておくべき最も重要なことは、モデルがそれで事前訓練されたトークン化ルールを使用していることを確実にするために同じモデル名でトークナイザーをインスタンス化する必要があることです。

AutoTokenizer でトークナイザーをロードします :

from transformers import AutoTokenizer

model_name = "nlptown/bert-base-multilingual-uncased-sentiment"
tokenizer = AutoTokenizer.from_pretrained(model_name)

テキストをトークナイザーに渡します :

encoding = tokenizer("We are very happy to show you the 🤗 Transformers library.")
print(encoding)
{'input_ids': [101, 11312, 10320, 12495, 19308, 10114, 11391, 10855, 10103, 100, 58263, 13299, 119, 102],
 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}

トークナイザーは以下を含む辞書を返します :

  • input_ids : トークンの数値表現。
  • atttention_mask : どのトークンが注目されるべきかを示す。

トークナイザーはまた入力のリストを受け取ることができて、そして均一な長さのバッチを返すためにテキストをパディングして切り詰めます :

pt_batch = tokenizer(
    ["We are very happy to show you the 🤗 Transformers library.", "We hope you don't hate it."],
    padding=True,
    truncation=True,
    max_length=512,
    return_tensors="pt",
)

tf_batch = tokenizer(
    ["We are very happy to show you the 🤗 Transformers library.", "We hope you don't hate it."],
    padding=True,
    truncation=True,
    max_length=512,
    return_tensors="tf",
)

トークン化の詳細と、画像, 音声とマルチモーダル入力を前処理する AutoImageProcessor, AutoFeatureExtractor と AutoProcessor を使用する方法については 前処理 チュートリアルを確認してください。

 

AutoModel

🤗 Transformers は事前訓練済みインスタンスをロードする単純で統一された方法を提供します。これは、AutoTokenizer をロードするように AutoModel をロードできることを意味します。唯一の違いはタスクに対して正しい AutoModel を選択することです。テキスト (or シークエンス) 分類に対しては、AutoModelForSequenceClassification をロードする必要があります :

from transformers import AutoModelForSequenceClassification

model_name = "nlptown/bert-base-multilingual-uncased-sentiment"
pt_model = AutoModelForSequenceClassification.from_pretrained(model_name)

AutoModel クラスによりサポートされるタスクについては タスク概要 をご覧ください。

 
これで前処理した入力のバッチをモデルに直接渡すことができます。** を追加して辞書をアンパックする必要があるだけです :

pt_outputs = pt_model(**pt_batch)

モデルは logits 属性内で最後の活性を出力します。確率を取得するためには softmax 関数を logits に適用します :

from torch import nn

pt_predictions = nn.functional.softmax(pt_outputs.logits, dim=-1)
print(pt_predictions)
tensor([[0.0021, 0.0018, 0.0115, 0.2121, 0.7725],
        [0.2084, 0.1826, 0.1969, 0.1755, 0.2365]], grad_fn=<SoftmaxBackward0>)

 

🤗 Transformers は事前訓練済みインスタンスをロードする単純で統一された方法を提供します。これは、AutoTokenizer をロードするように TFAutoModel をロードできることを意味します。唯一の違いはタスクに対して正しい TFAutoModel を選択することです。テキスト (or シークエンス) 分類に対しては、TFAutoModelForSequenceClassification をロードする必要があります :

from transformers import TFAutoModelForSequenceClassification

model_name = "nlptown/bert-base-multilingual-uncased-sentiment"
tf_model = TFAutoModelForSequenceClassification.from_pretrained(model_name)

AutoModel クラスによりサポートされるタスクについては タスク概要 をご覧ください。

 
これで前処理した入力のバッチをテンソルへの直接的な辞書キーを渡すことでモデルに直接渡すことができます。

tf_outputs = tf_model(tf_batch)

モデルは logits 属性内で最後の活性を出力します。確率を取得するためには softmax 関数を logits に適用します :

import tensorflow as tf

tf_predictions = tf.nn.softmax(tf_outputs.logits, axis=-1)
tf_predictions

総ての 🤗 Transformers モデルは (PyTorch or TensorFlow) は (softmax のような) 最終的な活性化関数の前にテンソルを出力します、最後の活性化関数は損失と融合されることが多いからです。🤗 Transformers モデル出力は特殊なデータクラスですから、それらの属性は IDE で自動補完されます。モデル出力はタプルか辞書のようにも動作します (e.g. 整数, スライス, 文字列でインデックスできます)、その場合には None の属性は無視されます。

 

モデルのセーブ

モデルが再調整されたら、PreTrainedModel.save_pretrained() を使用してそれをそのトークナイザーと共にセーブできます :

pt_save_directory = "./pt_save_pretrained"
tokenizer.save_pretrained(pt_save_directory)
pt_model.save_pretrained(pt_save_directory)

モデルを再度利用する準備ができたら、それを PreTrainedModel.from_pretrained() で再ロードします :

pt_model = AutoModelForSequenceClassification.from_pretrained("./pt_save_pretrained")

 

モデルが再調整されたら、TFPreTrainedModel.save_pretrained() を使用してそれをそのトークナイザーと共にセーブできます :

tf_save_directory = "./tf_save_pretrained"
tokenizer.save_pretrained(tf_save_directory)
tf_model.save_pretrained(tf_save_directory)

モデルを再度利用する準備ができたときには、それを TFPreTrainedModel.from_pretrained() で再ロードします :

tf_model = TFAutoModelForSequenceClassification.from_pretrained("./tf_save_pretrained")

 
一つの特にクールな 🤗 Transformers の機能はモデルをセーブしてそれを PyTorch か TensorFlow モデルのいずれかとして再ロードする機能です。from_pt or from_tf パラメータはモデルを一つのフレームワークから他方に変換できます :

from transformers import AutoModel

tokenizer = AutoTokenizer.from_pretrained(tf_save_directory)
pt_model = AutoModelForSequenceClassification.from_pretrained(tf_save_directory, from_tf=True)

from transformers import TFAutoModel

tokenizer = AutoTokenizer.from_pretrained(pt_save_directory)
tf_model = TFAutoModelForSequenceClassification.from_pretrained(pt_save_directory, from_pt=True)

 

以上



クラスキャット

最近の投稿

  • 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年5月
月 火 水 木 金 土 日
1234567
891011121314
15161718192021
22232425262728
293031  
« 4月   6月 »
© 2025 ClasCat® AI Research | Powered by Minimalist Blog WordPress Theme