Hugging Faceハブへ、fastaiさんを歓迎します

'Hugging Faceハブへ、fastaiさんを歓迎します' can be condensed to 'fastaiさん、Hugging Faceハブへようこそ!'

ニューラルネットを再びクールじゃなくする…そして共有する

Deep Learningのアクセシビリティを高めるために、fast.aiエコシステムは他に類を見ない成果を上げてきました。Hugging Faceの使命は、優れた機械学習を民主化することです。機械学習へのアクセスの排他性、事前学習済みモデルを過去のものとし、この素晴らしい領域をさらに推進しましょう。

fastaiは、PyTorchとPythonを活用して、テキスト、画像、表形式のデータに対して最新の出力を備えた高速かつ正確なニューラルネットワークをトレーニングするためのハイレベルなコンポーネントを提供するオープンソースのDeep Learningライブラリです。ただし、fast.aiは単なるライブラリ以上のものです。それはオープンソースの貢献者とニューラルネットワークの学習に取り組む人々の繁栄するエコシステムに成長しました。いくつかの例として、彼らの書籍やコースをチェックしてみてください。fast.aiのDiscordやフォーラムに参加してください。彼らのコミュニティに参加することで、確実に学びが得られます!

これら全ての理由から(この記事の執筆者はfast.aiのコースのおかげで自分の旅をスタートさせました)、私たちは誇りを持ってお知らせします。fastaiのプラクティショナーは、Pythonの一行でモデルをHugging Face Hubに共有・アップロードすることができるようになりました。

👉 この記事では、fastaiとHubの統合について紹介します。さらに、このチュートリアルをColabノートブックとして開くこともできます。

fast.aiコミュニティ、特にJeremy Howard、Wayde Gilliam、Zach Muellerにフィードバックをいただいたことに感謝します 🤗。このブログは、fastaiドキュメントのHugging Face Hubセクションに強く触発されています。

Hubに共有する理由

Hubは、モデル、データセット、MLデモを共有・探索できる中央プラットフォームです。最も広範なオープンソースのモデル、データセット、デモのコレクションを提供しています。

Hubで共有することで、あなたのfastaiモデルの影響力を広げ、他の人がダウンロードして探索できるようにします。また、fastaiモデルを転移学習に利用することもできます。他の誰かのモデルをタスクの基礎として読み込むことができます。

誰でも、hf.co/modelsのウェブページでfastaiライブラリをフィルタリングすることで、Hubの全てのfastaiモデルにアクセスできます。以下の画像を参照してください。

広範なコミュニティへの無料モデルホスティングと露出に加えて、Hubにはgitに基づいたバージョン管理(大容量ファイルの場合はgit-lfs)や、発見性と再現性のためのモデルカードも組み込まれています。Hubのナビゲーションについての詳細は、この紹介を参照してください。

Hugging Faceに参加してインストールする

Hubでモデルを共有するためには、ユーザーを作成する必要があります。Hugging Faceのウェブサイトで作成してください。

huggingface_hubライブラリは、Hugging Face Hubと対話するためのユーティリティ関数を備えた軽量なPythonクライアントです。fastaiモデルをHubにプッシュするためには、いくつかのライブラリを事前にインストールする必要があります(fastai>=2.4、fastcore>=1.3.27、toml)。huggingface_hubをインストールする際に、[“fastai”]を指定して自動的にインストールすることができます。環境の準備が整います。

pip install huggingface_hub["fastai"]

fastai Learnerの作成

ここでは、最初のモデルをトレーニングして、猫を識別するためのfastbookのコードを使用します 🐱。fastbook全体を読むことを強くお勧めします。

# fastbookの第1章の6行のトレーニング
from fastai.vision.all import *
path = untar_data(URLs.PETS)/'images'

def is_cat(x): return x[0].isupper()
dls = ImageDataLoaders.from_name_func(
    path, get_image_files(path), valid_pct=0.2, seed=42,
    label_func=is_cat, item_tfms=Resize(224))

learn = vision_learner(dls, resnet34, metrics=error_rate)
learn.fine_tune(1)

HubにLearnerを共有する

Learnerは、モデル、データローダー、損失関数をまとめたfastaiオブジェクトです。この記事全体を通じて、Learnerとモデルを同義語として使用します。

最初に、Hugging Face Hub にログインします。アカウント設定で write トークンを作成する必要があります。次に、3つのログインオプションがあります:

  1. ターミナルで huggingface-cli login と入力し、トークンを入力します。

  2. Python ノートブックの場合は、notebook_login を使用できます。

from huggingface_hub import notebook_login

notebook_login()
  1. push_to_hub_fastai 関数の token 引数を使用します。

push_to_hub_fastai には、アップロードしたい Learner と、ハブのリポジトリのリポジトリ ID を指定します。リポジトリ ID は “namespace/repo_name” の形式で指定します。namespace は、個々のアカウントまたは書き込みアクセス権限のある組織であることができます(例:’fastai/stanza-de’)。詳細については、Hub クライアントのドキュメントを参照してください。

from huggingface_hub import push_to_hub_fastai

# repo_id = "YOUR_USERNAME/YOUR_LEARNER_NAME"
repo_id = "espejelomar/identify-my-cat"

push_to_hub_fastai(learner=learn, repo_id=repo_id)

Learnerは、リポジトリ espejelomar/identify-my-cat として Hub にアップロードされました。自動的にモデルカードが作成され、いくつかのリンクと次のステップが表示されます。Hub に fastai の Learner (または他のモデル)をアップロードする際には、モデルカードを編集して他の人がより良く理解できるようにすると役立ちます(Hugging Face のドキュメントを参照してください)。

push_to_hub_fastai についてさらに詳しく学びたい場合は、Hub クライアントのドキュメントを参照してください。興味のある便利な引数もあります👀。忘れないでください、モデルはバージョン管理、コミット、ブランチなど、Git リポジトリとしての利点が全てあります。

Hugging Face Hub からの Learner の読み込み

Hub からモデルを読み込む方がさらに簡単です。”espejelomar/identify-my-cat” という Learner を読み込み、猫の画像でテストします(🦮?)。このコードは、fastbook の第1章から適応されました。

まず、猫の画像(または犬の可能性も?)をアップロードします。このチュートリアルで使用する Colab ノートブックでは、ipywidgets を使用して対話的に猫の画像をアップロードします(またはアップロードしないかもしれません)。ここでは、このかわいい猫 🐅 を使用します:

次に、Hub で共有したばかりの Learner をロードし、テストします。

from huggingface_hub import from_pretrained_fastai

# repo_id = "YOUR_USERNAME/YOUR_LEARNER_NAME"
repo_id = "espejelomar/identify-my-cat"

learner = from_pretrained_fastai(repo_id)

動作確認 👇!

_,_,probs = learner.predict(img)
print(f"Probability it's a cat: {100*probs[1].item():.2f}%")

Probability it's a cat: 100.00%

Hub クライアントのドキュメントには、from_pretrained_fastai の詳細が記載されています。

Blurr を使用して fastai と Hugging Face Transformers を組み合わせて共有する方法

[Blurr は] ファスタイの開発者向けに設計されたライブラリで、Hugging Face transformers をトレーニングおよび展開するためのものです – Blurr ドキュメント。

次のことを行います:

  1. blurr API を使用して、高レベルの Blurr API で blurr Learner をトレーニングします。Hugging Face Hub から distilbert-base-uncased モデルをロードし、シーケンス分類モデルを準備します。
  2. push_to_hub_fastai を使用して、fastai/blurr_IMDB_distilbert_classification のネームスペースで Hub に共有します。
  3. from_pretrained_fastai を使用してロードし、learner_blurr.predict() で試します。

コラボレーションとオープンソースは素晴らしいです!

まず、blurrをインストールしてLearnerをトレーニングします。

git clone https://github.com/ohmeow/blurr.git
cd blurr
pip install -e ".[dev]"

import torch
import transformers
from fastai.text.all import *

from blurr.text.data.all import *
from blurr.text.modeling.all import *

path = untar_data(URLs.IMDB_SAMPLE)
model_path = Path("models")
imdb_df = pd.read_csv(path / "texts.csv")

learn_blurr = BlearnerForSequenceClassification.from_data(imdb_df, "distilbert-base-uncased", dl_kwargs={"bs": 4})
learn_blurr.fit_one_cycle(1, lr_max=1e-3)

ハブで共有するために、push_to_hub_fastaiを使用します。

from huggingface_hub import push_to_hub_fastai

# repo_id = "YOUR_USERNAME/YOUR_LEARNER_NAME"
repo_id = "fastai/blurr_IMDB_distilbert_classification"

push_to_hub_fastai(learn_blurr, repo_id)

ハブからblurrモデルをロードするためにfrom_pretrained_fastaiを使用します。

from huggingface_hub import from_pretrained_fastai

# repo_id = "YOUR_USERNAME/YOUR_LEARNER_NAME"
repo_id = "fastai/blurr_IMDB_distilbert_classification"

learner_blurr = from_pretrained_fastai(repo_id)

いくつかの文を使って試して、learner_blurr.predict()でその感情(ネガティブまたはポジティブ)を確認してみましょう。

sentences = ["This integration is amazing!",
             "I hate this was not available before."]

probs = learner_blurr.predict(sentences)

print(f"文 '{sentences[0]}' がネガティブである確率は: {100*probs[0]['probs'][0]:.2f}%")
print(f"文 '{sentences[1]}' がネガティブである確率は: {100*probs[1]['probs'][0]:.2f}%")

再度、動作しています!

文 'This integration is amazing!' がネガティブである確率は: 29.46%
文 'I hate this was not available before.' がネガティブである確率は: 70.04%

次は何ですか?

fast.aiコースを受講してください(新しいバージョンが近日公開されます)、Jeremy Howardとfast.aiをTwitterでフォローして更新情報を入手し、fastaiモデルをHubで共有しましょう 🤗。または、既にHubに存在するモデルをロードします。

📧 Hugging Face Discordを通じてお気軽にお問い合わせいただき、プロジェクトのアイデアを共有してください。フィードバックをお待ちしています 💖。

ライブラリをHubに統合しますか?

この統合はhuggingface_hubライブラリによって可能になりました。もしもライブラリをHubに追加したい場合は、ガイドがあります!もしくはHugging Faceチームの誰かにタグを付けるだけでも構いません。

Hugging Faceチームによるこの統合への取り組みに感謝します。特に@osanseviero 🦙。

fastlearnerとhugging learnerの皆さん、ありがとうございます 🤗。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

人工知能

ピーター・マッキー、Sonarの開発者担当責任者-インタビューシリーズ

ピーター・マッキーはSonarのDeveloper Relationsの責任者です Sonarは、悪いコードの1兆ドルの課題を解決するプラットフォー...

人工知能

「15Rockの共同創業者兼CEO、ガウタム・バクシ氏によるインタビューシリーズ」

「ガウタム・バクシは、気候リスク管理とアドバイザリーサービスのグローバルリーダーである15Rockの共同創設者兼CEOですガウ...

人工知能

ギル・ジェロン、Orca SecurityのCEO&共同創設者-インタビューシリーズ

ギル・ゲロンは、オルカ・セキュリティのCEO兼共同設立者ですギルは20年以上にわたりサイバーセキュリティ製品をリードし、提...

データサイエンス

2023年にAmazonのデータサイエンティストになる方法は?

ほとんどのビジネスは現在、膨大な量のデータを生成し、編集し、管理しています。しかし、ほとんどのビジネスは、収集したデ...

人工知能

「クリス・サレンス氏、CentralReachのCEO - インタビューシリーズ」

クリス・サレンズはCentralReachの最高経営責任者であり、同社を率いて、自閉症や関連する障害を持つ人々のために優れたクラ...

人工知能

『ジュリエット・パウエル&アート・クライナー、The AI Dilemma – インタビューシリーズの著者』

『AIのジレンマ』は、ジュリエット・パウエルとアート・クライナーによって書かれましたジュリエット・パウエルは、著者であ...