AIツール 101
Complete Beginner’s Guide to Hugging Face LLM Tools

Hugging Faceは、学者、研究者、愛好家のコミュニティを構築したAI研究ラボとハブです。短期間で、Hugging FaceはAIスペースで顕著な存在感を獲得しています。Google、Amazon、Nvidiaを含む大手テック企業は、AIスタートアップのHugging Faceに大量の投資を行い、その評価は45億ドルに達しています。
このガイドでは、トランスフォーマー、LLM、Hugging FaceライブラリがオープンソースAIコミュニティを育む上で重要な役割を果たす方法について紹介します。さらに、パイプライン、データセット、モデルなど、Hugging Faceの基本的な機能について、ハンズオンのPython例を使用して説明します。
トランスフォーマーを使用したNLP
2017年、コーネル大学はトランスフォーマーを紹介する影響力のある論文を発表しました。これらはNLPで使用されるディープラーニングモデルです。この発見は、ChatGPTのような大規模な言語モデルを開発するための基盤となりました。
大規模な言語モデルまたはLLMは、人間のようなテキストを理解して生成するためにトランスフォーマーを使用するAIシステムです。しかし、これらのモデルを作成することは、高額な費用がかかることが多く、多くの場合、数百万ドルが必要になります。これにより、大規模な企業のみがこれらのモデルを利用できるようになります。
Hugging Faceは、2016年に設立され、NLPモデルをすべての人に利用可能にすることを目的としています。商業企業でありながら、トランスフォーマーモデルを構築して利用するために、幅広いオープンソースリソースを提供しています。機械学習は、コンピューターにパターンを認識させることでタスクを実行させることですが、ディープラーニングは、機械学習のサブセットであり、独立して学習するネットワークを作成します。トランスフォーマーは、入力データを効果的に柔軟に使用するディープラーニングアーキテクチャの一種であり、大規模な言語モデルを構築するために人気のある選択肢となっています。トレーニング時間の要件が少ないためです。
Hugging FaceがNLPとLLMプロジェクトを促進する方法
Hugging Faceは、以下の点でLLMの使用を簡素化しています:
- 選択できる事前トレーニング済みモデルの範囲。
- これらのモデルを特定のニーズに合わせて微調整するためのツールと例。
- さまざまな環境へのデプロイオプション。
Hugging Faceで利用可能な優れたリソースの1つは、Open LLM Leaderboardです。これは、包括的なプラットフォームとして機能し、さまざまな大規模言語モデル(LLM)とチャットボットの効率性を体系的に監視、ランク付け、測定し、オープンソースドメインでの進歩についての微妙な分析を提供します。
LLMベンチマークは、次の4つのメトリックを使用してモデルを測定します:
- AI2推論チャレンジ(25ショット)- 小学校の科学カリキュラムを中心とした質問シリーズ。
- HellaSwag(10ショット)- 人間にとっては簡単ですが、最先端のモデルにとっては重大な課題となる、共通の意味の推論テスト。
- MMLU(5ショット)- 基本的な数学、法律、コンピューターサイエンスなど、57の異なるドメインを網羅する、多面的な評価。
- TruthfulQA(0ショット)- モデルが頻繁にオンラインで見られる誤情報を反復する傾向を判断するツール。
ベンチマークは、「25ショット」、「10ショット」、「5ショット」、「0ショット」という用語を使用して説明され、評価プロセス中にモデルに提示されるプロンプト例の数を示します。「少ショット」パラダイムでは、モデルは応答を導くために少数の例が提供されますが、「0ショット」設定では、モデルは事前知識のみに頼って応答する必要があり、例は提供されません。
Hugging Faceのコンポーネント
パイプライン
「パイプライン」は、Hugging Faceのトランスフォーマーライブラリの一部であり、Hugging Faceリポジトリにある事前トレーニング済みモデルを簡単に利用できるようにする機能です。センチメント分析、質問回答、masked言語モデリング、固有表現認識、要約などのタスクに対して、直感的なAPIを提供します。
パイプラインは、Hugging Faceの3つの中心的なコンポーネントを統合します:
- トークナイザー: モデルが理解できる形式にテキストを変換することによって、テキストをモデルに準備します。
- モデル: 予測が行われるパイプラインの中心部分です。ここで、前処理された入力に基づいて実際の予測が行われます。
- ポストプロセッサー: モデルの生の予測を人間が読みやすい形式に変換します。
これらのパイプラインは、広範なコーディングを減らし、多様なNLPタスクを実行するためのユーザーフレンドリーなインターフェイスも提供します。
Hugging Faceライブラリを使用したトランスフォーマーの応用
Hugging Faceライブラリのハイライトは、トランスフォーマーライブラリであり、モデルを必要な前処理と後処理の段階に接続することで、NLPタスクを簡素化します。ライブラリをインストールしてインポートするには、次のコマンドを使用します:
pip install -q transformers from transformers import pipeline
これを行ったら、センチメント分析から始めて、NLPタスクを実行できます。ライブラリの強力なpipeline()関数は、他のパイプラインを包含し、オーディオ、ビジョン、多モーダルドメインでのタスク固有のアプリケーションを容易にします。
実践的な応用
テキスト分類
Hugging Faceのpipeline()関数を使用すると、テキスト分類が簡単になります。テキスト分類パイプラインを開始する方法は次のとおりです:
classifier = pipeline("text-classification")
実践的な経験を積むために、パイプラインに文字列または文字列のリストを入力して、予測を取得できます。これらは、PythonのPandasライブラリを使用して整然と視覚化できます。以下は、Pythonのスニペットです。
sentences = ["私はAIの素晴らしい世界を紹介することを楽しみにしています。",
"私は、それがあなたを失望させないことを願っています。"]
# リスト内の各文に対する分類結果を取得
results = classifier(sentences)
# 各結果をループして、ラベルとスコアを印刷します。
for i, result in enumerate(results):
print(f"結果 {i + 1}:")
print(f" ラベル: {result['label']}")
print(f" スコア: {round(result['score'], 3)}\n")
出力
結果 1: ラベル: ポジティブ スコア: 1.0 結果 2: ラベル: ポジティブ スコア: 0.996
固有表現認識(NER)
NERは、テキストから「固有表現」と呼ばれる実際のオブジェクトを抽出する上で重要です。NERパイプラインを使用してこれらのエンティティを効果的に識別します:
ner_tagger = pipeline("ner", aggregation_strategy="simple")
text = "Elon MuskはSpaceXのCEOです。"
outputs = ner_tagger(text)
print(outputs)
出力
Elon Musk: PER, SpaceX: ORG
質問回答
質問回答には、特定の質問に対する正確な回答を特定のテキストから抽出することが含まれます。質問回答パイプラインを初期化し、質問とコンテキストを入力して、必要な回答を取得します:
reader = pipeline("question-answering")
text = "Hugging FaceはNLPツールを作成する会社です。ニューヨークに本拠を置き、2016年に設立されました。"
question = "Hugging Faceはどこにありますか?"
outputs = reader(question=question, context=text)
print(outputs)
出力
{'score': 0.998, 'start': 51, 'end': 60, 'answer': 'ニューヨーク'} Hugging Faceのpipeline()関数は、テキスト分類、NER、質問回答以外にも、事前構築されたパイプラインを提供します。以下は、利用可能なタスクのサブセットの詳細です:
表: Hugging Faceパイプラインタスク
| タスク | 説明 | パイプライン識別子 |
| テキスト生成 | 与えられたプロンプトに基づいてテキストを生成する | pipeline(task=”text-generation”) |
| 要約 | 長いテキストやドキュメントを要約する | pipeline(task=”summarization”) |
| 画像分類 | 入力画像にラベルを付ける | pipeline(task=”image-classification”) |
| オーディオ分類 | オーディオデータを分類する | pipeline(task=”audio-classification”) |
| 視覚的な質問回答 | 画像と質問を使用して質問に回答する | pipeline(task=”vqa”) |
詳細な説明とその他のタスクについては、Hugging Faceのウェブサイトのパイプラインのドキュメントを参照してください。
Hugging FaceがRustに焦点を当てている理由
Hugging Face(HF)エコシステムは、safetensorsやtokenizersなどのライブラリでRustを使用し始めました。
Hugging Faceは最近、新しい機械学習フレームワークであるCandleをリリースしました。従来のフレームワークとは異なり、CandleはRustで構築されています。Rustを使用する目的は、パフォーマンスを向上させてユーザー体験を簡素化することであり、GPU操作をサポートすることです。
Candleの主な目的は、サーバーレス推論を可能にし、軽量バイナリのデプロイを可能にし、Pythonをプロダクションワークロードから除去することです。これは、PyTorchなどのフルマシーンラーニングフレームワークが大規模で遅いため、クラスターでインスタンスを作成する際に発生する問題に対する解決策です。
RustがPythonよりも優先される理由を探ってみましょう。
- スピードとパフォーマンス – Rustは、伝統的に機械学習フレームワークで使用されているPythonよりも驚異的なスピードで知られています。Pythonのパフォーマンスは、グローバルインタープリターロック(GIL)により低下することがありますが、Rustにはこの問題がありません。したがって、タスクの実行が速くなり、プロジェクトでRustを実装した場合のパフォーマンスが向上します。
- 安全性 – Rustは、ガベージコレクターなしでメモリセーフガランティを提供します。これは、safetensorsのようなデータ構造の安全性が重要な分野で非常に重要です。
Safetensors
Safetensorsは、Rustのスピードと安全性の機能から利益を得ます。Safetensorsには、テンソルと呼ばれる複雑な数学的エンティティの操作が含まれます。Rustを使用することで、操作が安全でバグやセキュリティ上の問題が生じることがなくなります。
トークナイザー
トークナイザーは、文章やフレーズを単語や語彙などの小さな単位に分割する責任があります。Rustは、このプロセスを高速化することで助けます。トークナイゼーションプロセスは正確ですが、迅速でもあり、NLPタスクの効率が向上します。
Hugging Faceのトークナイザーの核となる概念は、サブワードトークナイゼーションです。単語レベルと文字レベルのトークナイゼーションのバランスをとることで、情報の保持と語彙サイズを最適化します。サブトークン(「##ing」と「##ed」など)を作成することで機能します。セマンティックな豊かさを保持しながら、語彙を膨らませることを避けます。
サブワードトークナイゼーションには、最も効果的なバランスを見つけるために、広範なテキストコーパスにおける言語パターンの包括的な分析が必要です。生成されたトークナイザーは、既知のサブワードに分割することで新しい単語を処理することができ、セマンティックな理解を維持します。
トークナイゼーションのコンポーネント
トークナイザーライブラリは、トークナイゼーションプロセスをいくつかのステップに分割します。各ステップは、トークナイゼーションの異なる側面に対処します。詳細を見てみましょう:
- 正規化: 入力文字列の初期変換を適用し、必要な調整を行います。例えば、すべての文字を小文字に変換したり、Unicodeを正規化したり、余分なスペースを削除したりします。
- 前処理トークナイザー: 入力文字列を前セグメントに分割します。分割は、スペースなどの事前定義されたルールに基づいて行われます。
- モデル: サブトークンの発見と作成を担当し、入力データの特性に適応し、トレーニングの機能も提供します。
- 後処理: モデルの生の予測を人間が読みやすい形式に変換します。さらに、多くのトランスフォーマーモデル(BERTなど)と互換性を保つために、[CLS]や[SEP]などのトークンを追加する機能もあります。
トークナイザーライブラリを使用するには、`pip install tokenizers`コマンドを使用してライブラリをインストールし、Python環境にインポートします。ライブラリは、大量のテキストを非常に短時間でトークナイズできます。したがって、モデルトレーニングなどのより計算集中タスクに貴重な計算リソースを節約できます。
トークナイザーライブラリは、Rustを使用しており、C++の構文の類似性を継承しながら、プログラミング言語設計に新しい概念を導入しています。Pythonバインディングと組み合わせて使用することで、低レベル言語のパフォーマンスを享受しながら、Python環境で作業できます。
データセット
データセットは、AIプロジェクトの基盤です。Hugging Faceは、幅広いNLPタスクに適した多様なデータセットを提供しています。効率的に利用するには、データセットをロードして分析するプロセスを理解することが重要です。以下は、Hugging Faceのデータセットを使用する方法を示すPythonスクリプトです。
from datasets import load_dataset
# データセットをロードします
dataset = load_dataset('squad')
# 最初のエントリを表示します
print(dataset[0])
このスクリプトは、load_dataset関数を使用してSQuADデータセットをロードします。これは、質問回答タスクの一般的な選択です。
事前トレーニング済みモデルを活用し、すべてをまとめる
事前トレーニング済みモデルは、多くのディープラーニングプロジェクトの背骨です。研究者や開発者がゼロから始めることなくプロジェクトを開始できるようにします。Hugging Faceは、幅広い事前トレーニング済みモデルを提供します。
以下のコードを使用して、事前トレーニング済みモデルとトークナイザーをロードできます:
from transformers import AutoModelForQuestionAnswering, AutoTokenizer
# 事前トレーニング済みモデルとトークナイザーをロードします
model = AutoModelForQuestionAnswering.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
tokenizer = AutoTokenizer.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
# モデルのアーキテクチャを表示します
print(model)
モデルとトークナイザーをロードした後、テキストと質問を受け取り、テキストから回答を抽出する関数を作成できます。トークナイザーを使用して入力テキストと質問をモデルで使用できる形式に処理し、処理された入力をモデルにフィードして回答を取得します。
def get_answer(text, question): # 入力テキストと質問をトークナイズします inputs = tokenizer(question, text, return_tensors='pt', max_length=512, truncation=True) outputs = model(**inputs) # 回答の開始と終了スコアを取得します answer_start = torch.argmax(outputs.start_logits) answer_end = torch.argmax(outputs.end_logits) + 1 answer = tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(inputs['input_ids'][0][answer_start:answer_end])) return answer
このコードスニペットでは、transformersパッケージから必要なモジュールをインポートし、from_pretrainedメソッドを使用して事前トレーニング済みモデルと対応するトークナイザーをロードします。SQuADデータセットで事前トレーニングされたBERTモデルを選択します。
以下は、特定の質問に対する特定の回答をテキストから抽出する関数の使用例です。
text = """
イーホウタワーは、フランスのパリにあり、世界で最もアイコニックなランドマークの1つです。ギュスターヴ・エッフェルによって設計され、1889年に完成しました。タワーは、完成時の高さ324メートルで、当時世界で最も高い人工構造物でした。
"""
question = "イーホウタワーは誰が設計しましたか?"
# 質問に対する回答を取得します
answer = get_answer(text, question)
print(f"質問に対する回答は:{answer}")
# 出力:質問に対する回答は:ギュスターヴ・エッフェル
このスクリプトでは、get_answer関数を構築して、テキストと質問を受け取り、Hugging Faceのtransformersライブラリを使用してテキストから回答を抽出します。Hugging Faceのtransformersライブラリを使用して、シンプルながら強力な質問回答システムを構築するための実践的な応用例を示しています。概念を理解するには、Google Colab Notebookを使用して実践的な実験を行うことをお勧めします。
結論
Hugging Faceは、幅広いオープンソースツール、事前トレーニング済みモデル、ユーザーフレンドリーなパイプラインを提供することで、プロフェッショナルと初心者がAIの世界に簡単にアクセスできるようにします。さらに、Rustを統合する取り組みは、AIアプリケーションで効率性とセキュリティを確保するというHugging Faceの取り組みを強調しています。Hugging Faceの先駆的な仕事は、AIツールへのアクセスを民主化するだけでなく、AIスペースでの学習と開発のための共同環境も育んでいます。将来、AIが誰でもアクセスできるようになることを実現します。

















