Connect with us

AIツール 101

Hugging Face LLMツール完全初心者ガイド

mm
HUGGING FACE - COMPLETE GUIDE

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システムです。しかし、これらのモデルの作成には数百万ドルの費用がかかることが多く、大企業にしかアクセスできないという制限があります。 2016年に設立されたHugging Faceは、NLPモデルを誰もが利用できるようにすることを目指しています。商業会社であるにもかかわらず、人々や組織が手頃な価格でトランスフォーマーモデルを構築し使用できるようにする、さまざまなオープンソースリソースを提供しています。機械学習は、パターンを認識することでコンピューターにタスクを実行するように教えることですが、深層学習は機械学習のサブセットであり、自律的に学習するネットワークを作成します。トランスフォーマーは、入力データを効率的かつ柔軟に使用する一種の深層学習アーキテクチャであり、トレーニング時間が少なくて済むため、大規模言語モデルの構築に人気のある選択肢となっています。

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

Hugging face Ecosystem - Models, dataset, metrics, transformers, accelerate, tokenizers Hugging Faceは、以下を提供することでLLMの作業を簡素化しました:

  1. 選択可能なさまざまな事前学習済みモデル。
  2. 特定のニーズに合わせてこれらのモデルを微調整するためのツールと例。
  3. さまざまな環境への簡単なデプロイオプション。

Hugging Faceを通じて利用できる優れたリソースがOpen LLM Leaderboardです。包括的なプラットフォームとして機能し、さまざまな大規模言語モデル(LLM)とチャットボットの効率を体系的に監視、ランク付け、測定し、オープンソース領域の進歩について識別的な分析を提供します。 LLMベンチマークは、4つの指標を通じてモデルを測定します:

  • AI2 Reasoning Challenge (25-shot) — 初等科学のシラバスに関する一連の質問。
  • HellaSwag (10-shot) — 常識的な推論テストで、人間には簡単ですが、最先端モデルにとっては大きな課題となる指標です。
  • MMLU (5-shot) — 基礎数学、法律、コンピューターサイエンスなど、57の多様な分野にわたるテキストモデルの習熟度を評価する多面的な評価。
  • TruthfulQA (0-shot) — モデルが頻繁に遭遇するオンラインの誤情報を反復する傾向を確認するためのツール。

「25-shot」、「10-shot」、「5-shot」、「0-shot」などの用語で説明されるベンチマークは、モデルのパフォーマンスとさまざまな分野での推論能力を評価するために、評価プロセス中にモデルに与えられるプロンプト例の数を示します。「Few-shot」パラダイムでは、モデルは回答を導くための少数の例を提供されますが、「0-shot」設定では、モデルは例を受け取らず、事前の知識のみに頼って適切に応答する必要があります。

Hugging Faceの構成要素

パイプライン

‘pipelines’はHugging Faceのトランスフォーマーライブラリの一部であり、Hugging Faceリポジトリで利用可能な事前学習済みモデルを簡単に利用できるようにする機能です。感情分析、質問応答、マスク言語モデリング、固有表現認識、要約など、さまざまなタスクのための直感的なAPIを提供します。 パイプラインは、Hugging Faceの3つの主要コンポーネントを統合します:

  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."] # リスト内の各文の分類結果を取得 results = classifier(sentences) # 各結果をループしてラベルとスコアを表示 for i, result in enumerate(results): print(f"Result {i + 1}:") print(f" Label: {result['label']}") print(f" Score: {round(result['score'], 3)}\n") 

出力

 1.0 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の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 Safetensors and tokenizer Rust

Hugging face Safetensors and tokenizer GitHub Page

Hugging Face(HF)エコシステムは、safetensorsやtokenizersなどのライブラリでRustの使用を開始しました。 Hugging Faceはごく最近、Candleという新しい機械学習フレームワークもリリースしました。従来のPythonを使用するフレームワークとは異なり、CandleはRustで構築されています。Rustを使用する目的は、GPU操作をサポートしながら、パフォーマンスを向上させ、ユーザーエクスペリエンスを簡素化することです。 Candleの主な目的は、サーバーレス推論を容易にし、軽量なバイナリのデプロイを可能にし、本番ワークロードからPythonを排除することです。Pythonはオーバーヘッドによりプロセスを遅くすることがあります。このフレームワークは、クラスター上でインスタンスを作成する際に大きくて遅いPyTorchのような完全な機械学習フレームワークで遭遇する問題を克服する解決策として登場しました。 なぜRustがPythonよりも好まれる選択肢になりつつあるのかを探ってみましょう。

  1. 速度とパフォーマンス – Rustはその信じられないほどの速度で知られており、機械学習フレームワークで伝統的に使用されてきたPythonを凌駕します。Pythonのパフォーマンスは、グローバルインタプリタロック(GIL)により時々遅くなる可能性がありますが、Rustはこの問題に直面せず、タスクの実行がより速くなり、結果として実装されるプロジェクトのパフォーマンスが向上します。
  2. 安全性 – Rustはガベージコレクターなしでメモリ安全性を保証し、並行システムの安全性を確保する上

I have spent the past five years immersing myself in the fascinating world of Machine Learning and Deep Learning. My passion and expertise have led me to contribute to over 50 diverse software engineering projects, with a particular focus on AI/ML. My ongoing curiosity has also drawn me toward Natural Language Processing, a field I am eager to explore further.