スタブ ハグフェイス LLM ツールの完全初心者ガイド - Unite.AI
私達と接続

AI ツール 101

ハグフェイス LLM ツールの完全初心者ガイド

mm
更新中 on
ハグフェイス - 完全ガイド

Hugging Face は、学者、研究者、愛好家のコミュニティを構築した AI 研究ラボおよびハブです。 短期間のうちに、Hugging Face は AI 分野で大きな存在感を獲得しました。 テック巨人 Google、Amazon、Nvidia を含む大手企業が AI スタートアップの Hugging Face を多額の投資で強化し、その評価を高めた 2022年の174億4000万ドル.

このガイドでは、トランスフォーマー、LLM、およびオープンソース AI コミュニティの育成において Hugging Face ライブラリがどのように重要な役割を果たすかを紹介します。 また、パイプライン、データセット、モデルなどを含む、Hugging Face の重要な機能について、実践的な Python の例を使用して説明します。

NLP におけるトランスフォーマー

2017 年、コーネル大学は、次のことを紹介する影響力のある論文を発表しました。 トランスフォーマー。 これらは、NLP で使用される深層学習モデルです。 この発見は、次のような大規模な言語モデルの開発を促進しました。 AI言語モデルを活用してコードのデバッグからデータの異常検出まで、.

大規模言語モデルまたは LLM は、トランスフォーマーを使用して人間のようなテキストを理解して作成する AI システムです。 ただし、これらのモデルの作成には費用がかかり、多くの場合数百万ドルが必要となるため、大企業が利用できるのは限られています。

ハグ顔は 2016 年に開始され、NLP モデルを誰でも利用できるようにすることを目的としています。営利企業であるにもかかわらず、人々や組織が手頃な価格で変圧器モデルを構築および使用できるよう支援するさまざまなオープンソース リソースを提供しています。機械学習はパターンを認識することでコンピューターにタスクを実行するよう教えるものですが、機械学習のサブセットであるディープラーニングは独立して学習するネットワークを作成します。トランスフォーマーは、入力データを効果的かつ柔軟に使用する深層学習アーキテクチャの一種であり、トレーニングに必要な時間が短いため、大規模な言語モデルを構築する場合によく使用されます。

顔のハグがどのように NLP および LLM プロジェクトを促進するか

ハグ顔エコシステム - モデル、データセット、メトリクス、トランスフォーマー、アクセラレータ、トークナイザー

Hugging Face は、以下を提供することで LLM の操作を簡素化しました。

  1. さまざまな事前トレーニング済みモデルから選択できます。
  2. これらのモデルを特定のニーズに合わせて微調整するためのツールと例。
  3. さまざまな環境に簡単に導入できるオプション。

Hugging Face を通じて利用できる素晴らしいリソースは、 LLM リーダーボードを開く。 包括的なプラットフォームとして機能し、さまざまな大規模言語モデル (LLM) とチャットボットの効率を体系的に監視、ランク付け、測定し、オープンソース領域の進歩についての洞察力のある分析を提供します。

LLM ベンチマークは、次の XNUMX つの指標を通じてモデルを測定します。

  • AI2 推理チャレンジ (25 ショット) — 初等科学のシラバスに関する一連の質問。
  • ヘラスワッグ (10 ショット) — このメトリクスは人間にとっては単純でも、最先端のモデルにとっては重大な課題となる常識的な推論テストです。
  • MMLU (5 ショット) — とりわけ基本的な数学、法律、コンピューター サイエンスを含む 57 の多様な領域にわたるテキスト モデルの習熟度に触れる多面的な評価です。
  • 正直なQA (0-shot) — オンラインで頻繁に遭遇する誤った情報をエコーするモデルの傾向を確認するツール。

「25 ショット」、「10 ショット」、「5 ショット」、「0 ショット」などの用語を使用して説明されるベンチマークは、評価プロセス中にモデルに与えられるプロンプト サンプルの数を示します。さまざまな領域でのパフォーマンスと推論能力を評価します。 「少数ショット」パラダイムでは、モデルには応答のガイドとなる少数の例が提供されますが、「ゼロショット」設定では、モデルは例を受け取らず、適切に応答するには既存の知識のみに依存する必要があります。 。

ハグ顔の構成要素

パイプライン

'パイプライン' は、Hugging Face のトランスフォーマー ライブラリの一部であり、Hugging Face リポジトリで利用可能な事前トレーニングされたモデルを簡単に利用するのに役立つ機能です。 感情分析、質問応答、マスク言語モデリング、固有表現認識、要約などの一連のタスクに直感的な API を提供します。

パイプラインには、次の XNUMX つの中央の Hugging Face コンポーネントが統合されています。

  1. トークナイザー: モデルが理解できる形式にテキストを変換することで、モデル用のテキストを準備します。
  2. モデル: これは、前処理された入力に基づいて実際の予測が行われるパイプラインの中心です。
  3. ポストプロセッサ: モデルの生の予測を人間が読める形式に変換します。

これらのパイプラインは、大規模なコーディングを削減するだけでなく、さまざまな NLP タスクを実行するためのユーザーフレンドリーなインターフェイスも提供します。

Hugging Face ライブラリを使用したトランスフォーマー アプリケーション

Hugging Face ライブラリのハイライトは、Transformers ライブラリです。これは、モデルを必要な前処理および後処理ステージに接続することで NLP タスクを簡素化し、分析プロセスを合理化します。 ライブラリをインストールしてインポートするには、次のコマンドを使用します。

pip install -q transformers
from transformers import pipeline

それが完了したら、テキストを肯定的な感情と否定的な感情に分類する感情分析から始まる NLP タスクを実行できます。 ライブラリの強力な Pipeline() 関数は、他のパイプラインを包含するハブとして機能し、オーディオ、ビジョン、およびマルチモーダル ドメインにおけるタスク固有のアプリケーションを促進します。

実用化

テキスト分類

Hugging Face の Pipeline() 関数を使用すると、テキストの分類が簡単になります。 テキスト分類パイプラインを開始する方法は次のとおりです。

classifier = pipeline("text-classification")

実際に体験するには、文字列または文字列のリストをパイプラインにフィードして予測を取得します。これは、Python の Pandas ライブラリを使用してきれいに視覚化できます。 以下はこれを示す Python スニペットです。

sentences = ["I am thrilled to introduce you to the wonderful world of AI.",
"Hopefully, it won't disappoint you."]
# Get classification results for each sentence in the list
results = classifier(sentences)
# Loop through each result and print the label and score
for i, result in enumerate(results):
print(f"Result {i + 1}:")
print(f" Label: {result['label']}")
print(f" Score: {round(result['score'], 3)}\n")

出力

Result 1: 
Label: POSITIVE 
Score: 1.0 
Result 2: 
Label: POSITIVE 
Score: 0.996 

固有表現抽出(NER)

NER は、テキストから「名前付きエンティティ」と呼ばれる現実世界のオブジェクトを抽出する上で極めて重要です。 NER パイプラインを利用して、これらのエンティティを効果的に識別します。

ner_tagger = pipeline("ner", aggregation_strategy="simple")
text = "Elon Musk is the CEO of SpaceX."
outputs = ner_tagger(text)
print(outputs)

出力

 Elon Musk: PER, SpaceX: ORG 

質問応答

質問応答には、与えられたコンテキストから特定の質問に対する正確な回答を抽出することが含まれます。 質問応答パイプラインを初期化し、質問とコンテキストを入力して目的の回答を取得します。

reader = pipeline("question-answering")
text = "Hugging Face is a company creating tools for NLP. It is based in New York and was founded in 2016."
question = "Where is Hugging Face based?"
outputs = reader(question=question, context=text)
print(outputs)

出力

 {'score': 0.998, 'start': 51, 'end': 60, 'answer': 'New York'} 

Hugging Face のパイプライン機能は、テキスト分類、NER、質問応答以外にも、さまざまなタスク用に事前に構築された一連のパイプラインを提供します。 以下は、利用可能なタスクのサブセットの詳細です。

表: ハグフェイスパイプラインタスク

仕事Descriptionパイプライン識別子
テキスト生成指定されたプロンプトに基づいてテキストを生成しますパイプライン(タスク=”テキスト生成”)
要約長い文章や文書を要約するパイプライン(タスク=”要約”)
画像分類入力画像にラベルを付けるパイプライン(タスク=”画像分類”)
オーディオ分類音声データを分類するパイプライン(task=”オーディオ分類”)
ビジュアル質問応答画像と質問の両方を使用してクエリに回答しますパイプライン(task=”vqa”)

 

詳細な説明とその他のタスクについては、「 Hugging Face の Web サイトにあるパイプラインのドキュメント.

Hugging Face が Rust に重点を移す理由

ハグフェイス セーフテンサーとトークナイザー Rust

ハグフェイス セーフテンサーとトークナイザー GitHub ページ

Hugging Face (HF) エコシステムは、セーフセンサーやトークナイザーなどのライブラリで Rust の利用を開始しました。

Hugging Face はごく最近、と呼ばれる新しい機械学習フレームワークもリリースしました。 キャンドル。 Python を使用する従来のフレームワークとは異なり、Candle は Rust で構築されています。 Rust を使用する背後にある目標は、GPU 操作をサポートしながらパフォーマンスを向上させ、ユーザー エクスペリエンスを簡素化することです。

Candle の主な目的は、サーバーレス推論を促進し、軽量バイナリのデプロイを可能にし、オーバーヘッドによってプロセスが遅くなる場合がある Python を運用ワークロードから取り除くことです。 このフレームワークは、クラスター上にインスタンスを作成するときに大きくて遅いという、PyTorch のような完全な機械学習フレームワークで発生する問題を克服するためのソリューションとして提供されます。

なぜ Python よりも Rust が好まれる選択肢になっているのかを見てみましょう。

  1. スピードとパフォーマンス – Rust は、機械学習フレームワークで伝統的に使用されている Python を上回る驚異的な速度で知られています。 Python のパフォーマンスは、グローバル インタプリタ ロック (GIL) が原因で遅くなることがありますが、Rust ではこの問題に直面せず、タスクの実行が高速化され、その結果、Python が実装されているプロジェクトのパフォーマンスが向上することが期待されます。
  2. 安全性 – Rust は、ガベージ コレクターを使用せずにメモリの安全性を保証します。これは、同時実行システムの安全性を確保するために不可欠な機能です。 これは、データ構造を扱う際の安全性が優先されるセーフテンサーのような分野で重要な役割を果たします。

セーフテンサー

セーフテンサー Rust のスピードと安全性の機能を活用できます。 セーフテンソルには、複雑な数学的実体であるテンソルの操作が含まれます。Rust を使用することで、操作が高速であるだけでなく安全性も保証され、メモリの誤処理によって発生する可能性のある一般的なバグやセキュリティの問題が回避されます。

トークナイザー

トークナイザー 文やフレーズを単語や用語などの小さな単位に分解します。 Rust は実行時間を短縮することでこのプロセスを支援し、トークン化プロセスが正確であるだけでなく迅速であることを保証し、自然言語処理タスクの効率を高めます。

Hugging Face のトークナイザーの中心となるのはサブワード トークナイゼーションの概念であり、単語レベルと文字レベルのトークナイゼーションの間で微妙なバランスをとり、情報保持と語彙サイズを最適化します。 これは、「##ing」や「##ed」などのサブトークンの作成を通じて機能し、語彙の肥大化を避けながら意味の豊かさを維持します。

サブワードのトークン化には、文字レベルと単語レベルのトークン化の間の最も効果的なバランスを特定するためのトレーニング フェーズが含まれます。 これは単なる接頭辞と接尾辞のルールを超えており、効率的なサブワード トークナイザーを設計するには、広範なテキスト コーパス内の言語パターンを包括的に分析する必要があります。 生成されたトークナイザーは、新しい単語を既知のサブワードに分解することで新しい単語を処理することに熟達し、高レベルの意味理解を維持します。

トークン化コンポーネント

トークナイザー ライブラリは、トークン化プロセスをいくつかのステップに分割し、それぞれがトークン化の異なる側面に対応します。 これらのコンポーネントを詳しく見てみましょう。

  • ノーマライザー: 入力文字列に対して初期変換を行い、小文字変換、Unicode 正規化、ストリッピングなどの必要な調整を適用します。
  • PreTokenizer: 入力文字列をプリセグメントに断片化し、スペースの境界線などの事前定義されたルールに基づいて分割を決定します。
  • モデル: サブトークンの検出と作成を監督し、入力データの詳細に適応してトレーニング機能を提供します。
  • ポストプロセッサ: [CLS] や [SEP] などのトークンを追加することで、構築機能を強化し、BERT などの多くのトランスベースのモデルとの互換性を容易にします。

Hugging Face トークナイザーを開始するには、次のコマンドを使用してライブラリをインストールします。 pip install tokenizers それを Python 環境にインポートします。 このライブラリは、非常に短時間で大量のテキストをトークン化できるため、モデル トレーニングなどのより集中的なタスクのために貴重な計算リソースを節約できます。

トークナイザー ライブラリが使用するのは、 さび これは、C++ の構文の類似性を継承しながら、プログラミング言語設計に新しい概念を導入します。 Python バインディングと組み合わせることで、Python 環境での作業中に低レベル言語のパフォーマンスを確実に楽しむことができます。

データセット

データセットは AI プロジェクトの基盤です。 Hugging Face は、さまざまな NLP タスクなどに適したさまざまなデータセットを提供します。 これらを効率的に利用するには、それらのロードと分析のプロセスを理解することが不可欠です。 以下は、Hugging Face で利用可能なデータセットを探索する方法を示す、適切なコメント付きの Python スクリプトです。

from datasets import load_dataset
# Load a dataset
dataset = load_dataset('squad')
# Display the first entry
print(dataset[0])

このスクリプトは、load_dataset 関数を使用して SQuAD データセットをロードします。これは、質問応答タスクで一般的な選択肢です。

事前トレーニングされたモデルを活用し、すべてを統合する

事前トレーニングされたモデルは多くの深層学習プロジェクトのバックボーンを形成しており、研究者や開発者がゼロから始めることなく取り組みをすぐにスタートできるようになります。 以下のコードに示すように、Hugging Face を使用すると、さまざまな事前トレーニング済みモデルの探索が容易になります。

from transformers import AutoModelForQuestionAnswering, AutoTokenizer
# Load the pre-trained model and tokenizer
model = AutoModelForQuestionAnswering.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
tokenizer = AutoTokenizer.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
# Display the model's architecture
print(model)

モデルとトークナイザーをロードしたら、テキストと質問を入力として受け取り、テキストから抽出した回答を返す関数の作成に進むことができます。 トークナイザーを利用して、入力テキストと質問をモデルと互換性のある形式に処理し、この処理された入力をモデルにフィードして答えを取得します。

def get_answer(text, question):
    # Tokenize the input text and question
    inputs = tokenizer(question, text, return_tensors='pt', max_length=512, truncation=True)
    outputs = model(**inputs)
    # Get the start and end scores for the answer
    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 = """
The Eiffel Tower, located in Paris, France, is one of the most iconic landmarks in the world. It was designed by Gustave Eiffel and completed in 1889. The tower stands at a height of 324 meters and was the tallest man-made structure in the world at the time of its completion.
"""
question = "Who designed the Eiffel Tower?"
# Get the answer to the question
answer = get_answer(text, question)
print(f"The answer to the question is: {answer}")
# Output: The answer to the question is: Gustave Eiffel

このスクリプトでは、テキストと質問を取得し、それらを適切にトークン化し、事前トレーニングされた BERT モデルを活用してテキストから回答を抽出する get_answer 関数を構築します。 これは、Hugging Face のトランスフォーマー ライブラリを実際に応用して、シンプルかつ強力な質問応答システムを構築する方法を示しています。 概念をよく理解するには、 Google Colab ノートブック.

まとめ

幅広いオープンソース ツール、事前トレーニングされたモデル、ユーザーフレンドリーなパイプラインを通じて、経験豊富な専門家と初心者の両方が、容易かつ理解しながら AI の広大な世界を掘り下げることができます。 さらに、スピードと安全性の機能を備えた Rust を統合する取り組みは、AI アプリケーションの効率とセキュリティを確保しながらイノベーションを促進するという Hugging Face の取り組みを強調しています。 Hugging Face の変革的な取り組みは、高レベルの AI ツールへのアクセスを民主化するだけでなく、AI 分野での学習と開発のための共同環境を育成し、AI が利用できる未来を促進します。

私は過去 50 年間、機械学習と深層学習の魅力的な世界に没頭してきました。 私の情熱と専門知識により、特に AI/ML に重点を置いた XNUMX を超える多様なソフトウェア エンジニアリング プロジェクトに貢献してきました。 私の継続的な好奇心は、私がさらに探求したいと思っている分野である自然言語処理にも引き寄せられました。