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つのログインオプションがあります:
-
ターミナルで
huggingface-cli login
と入力し、トークンを入力します。 -
Python ノートブックの場合は、
notebook_login
を使用できます。
from huggingface_hub import notebook_login
notebook_login()
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 ドキュメント。
次のことを行います:
blurr
API を使用して、高レベルの Blurr API でblurr
Learner をトレーニングします。Hugging Face Hub からdistilbert-base-uncased
モデルをロードし、シーケンス分類モデルを準備します。push_to_hub_fastai
を使用して、fastai/blurr_IMDB_distilbert_classification
のネームスペースで Hub に共有します。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!
Was this article helpful?
93 out of 132 found this helpful
Related articles