Hugging Faceというサービスは聞いたことがあるでしょうか。機械学習に関わったり、興味を持った方であれば大抵聞いたこと、試したことがあるはずです。

今回はHugging Faceについて、ぜひ皆さんに知って欲しいポイントを紹介します。

1. 序章:Hugging Faceとは?

1.1. Hugging Faceの歴史とその使命

「Hugging Face」とは、2016年に設立された会社で、最初はチャットボットのアプリを作っていました。しかし、その後事業方針を変えて、機械学習技術をより多くの人が使えるようにすることを目指すようになりました。

Hugging Faceは、機械学習を行う際に役立つツールやプログラム(ライブラリ)を誰でも無料で使えるように公開しており、これらのツールを共有するためのプラットフォーム(Hub)も提供しています。

この会社が目指している「民主化」とは、誰でも簡単に機械学習の開発や使用を行えるようにすることを意味しています。

1.2. なぜHugging Faceが重要なのか?

Hugging Faceは、機械学習分野におけるGitHubのようなものです。このサービスでは、Gitをベースにしたコードの保存場所(リポジトリ)を提供し、機械学習モデルの異なるバージョンを管理できます。プロジェクトについて話し合ったり、改善のための提案(プルリクエスト)を送ることもできます。

さらに、ブラウザ上で動作する環境が整っているため、複雑な設定や長時間の準備なしに機械学習モデルの実験を始めることができます。ただし、これらのモデルを実際の製品に組み込む際には、追加で設定が必要になることがあります。ですが、初めて機械学習に触れる場合には、Hugging Faceがとても便利です。

2. Hugging Faceが提供する主要な製品とサービス

Hugging Faceでは以下のサービスを提供しています。

2.1. Transformersライブラリ

Transformersライブラリは、テキスト、画像、音声データを扱うための変換モデルと、これらのモデルを使ったプログラムのコードを提供するツールです。

このライブラリは、PyTorch、TensorFlow、JAXといった有名なディープラーニングのライブラリと一緒に使うことができます。多くの人に使われており、特にBERTやGPT-2のような有名なモデルの実装を含んでいるため、機械学習やディープラーニングに関わる人にはとても人気があります。

🤗 Transformers

2.2. Tokenizersライブラリ

このライブラリは「Tokenizers」と呼ばれ、機械学習の「Transformers」ライブラリ内でも使用されています。

プログラミング言語のRustで作られており、そのため学習やトークン化(文章をトークンに分割すること)の処理が非常に速いです。たとえば、ギガバイト(GB)単位の大きなテキストデータでも、CPUを使用して約20秒で学習することができます。

このライブラリは、汎用性が高く、研究目的でも実際の製品開発でも使えるように設計されています。
Tokenizers

2.3. Datasetsライブラリ

Datasetsは、テキスト、画像、音声といったさまざまなタスクに使用できるデータセットに手軽にアクセスし、それらを共有するためのツールです。このライブラリを使うと、データセットを簡単にダウンロードし、機械学習のトレーニング用にデータを迅速に準備することができます。

また、大きなデータセットも、コンピュータのメモリに制限されることなく使うことが可能です。

Datasets

2.4. Hugging Face Hub

Hugging Face Hubは私たちが一番よく知っているHugging Faceになります。2023年8月現在、2万を超えるデータセット、5万のデモアプリが登録されています。これらはオープンソースで公開されています。

Hugging Face Hub documentation

3. Hugging Face Hubの主要な機能

Hugging Face Hubは、機械学習プロジェクトをホスト、公開、共有できます。Hugging Face Hubの中で提供されている機能には以下が挙げられます。

リポジトリ

Hugging Face Hubは各プロジェクトに対してGitリポジトリを提供しています。その中にモデルやデータセットをアップロードできます。

デモ環境

機械学習モデルをブラウザから実行できるインタラクティブなアプリケーションが用意されています。

モデルカード

モデルカードは、アップロードしたAIモデルに関する情報のことです。この情報はREADME.mdファイルにMarkdown形式で書かれており、モデルの説明、目的、制限、トレーニングに使用したパラメーターやデータセット、評価結果などが含まれます。

データセット

Hugging Face Hubには5,000以上の様々な用途に使えるデータセットがあります。これらは、自然言語処理、画像認識、音声認識などのタスクに使用できます。各データセットには、モデルカードと同様のデータセットカードがあり、データセットの言語、ライセンス、タグなどの情報を提供します。

Space

Spaceは、Streamlit、Gradio、Dockerを使って作られたアプリケーションを実行できる環境です。静的なウェブページ(HTML、JavaScript、CSS)もホストできます。これにより、自分が開発したアプリケーションを簡単に公開し、ポートフォリオとして利用することができます。

基本的には、2つの仮想CPU、16GBのメモリ、50GBのストレージが無料で提供されます。これを超えるリソース(例えば、GPU)を使用する場合は、時間ごとに料金がかかります。

Organization

GitHubのように組織を作成できます。企業はもちろん、大学や非営利団体などが組織を作成しています。教育者であればHugging Face for Classroomsという仕組みで学生向けの組織も作成できます。

4. 実践:Hugging Faceを用いたプロジェクトの例

4.1. テキスト生成

line-corporation/japanese-large-lm-1.7b · Hugging Faceを利用した例です。17億のパラメーターを持った日本語に特化したモデルです。

このAIモデルに「Monacaは」と質問すると、「Monacaは、iOS/Androidアプリを作るのに必要な機能がそろった、インターネット上で使える開発環境(IDE)です。」と答えが返ってきました。

4.2 チャットボット

ChatGPTのようなチャットボットはmeta-llama/Llama-2-70b-chat-hf · Hugging FaceがHugging Faceによって開発されています。

デモはHuggingChatにて利用できます。チャットは日本語でも質問できますが、返答は英語です。

4.3 テキストから画像生成

stabilityai/stable-diffusion-xl-base-1.0 · Hugging Faceを利用した結果です。(着物を着た犬がギターを弾いている)」として生成された画像は以下のものです。

なるべく詳しく状況を書くと、出力制度が上がるようです。

5. Hugging Faceと他のAIライブラリとの比較

最近の機械学習の世界では、モデルが非常に複雑になり、計算するための数値(パラメーター)が数億から数兆に達することも珍しくありません。これにより、モデルを学習させるのに必要な時間や費用が大幅に増加しています。この問題に対処するため、すでにある程度学習されたモデル(特徴抽出器)を新しいタスクに再利用する「転移学習」という方法が流行しています。

例えば、あるモデルがTensorFlowというツールで作られていて、それをPyTorchという別のツールで使いたい場合、通常はそのモデルをPyTorch用に変換する必要があり、これが結構大変な作業です。しかし、「Transformers」というツールを使うと、このような異なるツール間でのモデルの再利用がずっと簡単になります。これは、Transformersが異なるツール間で共通のインタフェースを提供しているためです。

まとめ

何年か前までは、機械学習の専門家たちが一生懸命になって新しいAIモデルを作り、それを公開していました。そのような時期に、ChatGPTのようなAIが登場し、APIを通じて誰でもAIを簡単に使えるようになりました。

Hugging Faceは、これらのAIモデルを公開したり共有したりする場所を提供しており、デモを通して実際に試すことができるようになっています。これにより、AIの活用がもっと広がっていくでしょう。AIモデルの利用はもちろん、ぜひHugging Faceで自分の機械学習モデルを公開してみてください。

Hugging Face – The AI community building the future.