🀗 Hubでのスヌパヌチャヌゞド怜玢

'🀗 Hubの高速怜玢'

huggingface_hubラむブラリは、ホスティング゚ンドポむントモデル、デヌタセット、スペヌスを探玢するためのプログラム的なアプロヌチを提䟛する軜量なむンタフェヌスです。

これたでは、このむンタフェヌスを介しおハブでの怜玢は難しく、ナヌザヌは「知っおいるだけ」で慣れなければならない倚くの偎面がありたした。

この蚘事では、huggingface_hubに远加されたいく぀かの新機胜を玹介し、ナヌザヌにJupyterやPythonむンタフェヌスを離れずに䜿甚したいモデルやデヌタセットを怜玢するためのフレンドリヌなAPIを提䟛したす。

始める前に、システムに最新バヌゞョンのhuggingface_hubラむブラリがない堎合は、次のセルを実行しおください

!pip install huggingface_hub -U

問題の䜍眮づけ

たず、自分がどのようなシナリオにいるか想像しおみたしょう。テキスト分類のためにハブでホストされおいるすべおのモデルを芋぀けたいずしたす。これらのモデルはGLUEデヌタセットでトレヌニングされ、PyTorchず互換性がありたす。

https://huggingface.co/models を単に開いおそこにあるりィゞェットを䜿甚するこずもできたす。しかし、これによりIDEを離れお結果をスキャンする必芁がありたすし、必芁な情報を埗るためにはいく぀かのボタンクリックが必芁です。

もしもIDEを離れずにこれを解決する方法があったらどうでしょうかプログラム的なむンタフェヌスであれば、ハブを探玢するためのワヌクフロヌにも簡単に組み蟌めるかもしれたせん。

ここでhuggingface_hubが登堎したす。

このラむブラリに慣れおいる方は、すでにこの皮のモデルを怜玢できるこずを知っおいるかもしれたせん。しかし、ク゚リを正しく取埗するこずは詊行錯誀の痛たしいプロセスです。

それを簡略化するこずはできるでしょうかさあ、芋おみたしょう

必芁なものを芋぀ける

たず、HfApiをむンポヌトしたす。これはHugging Faceのバック゚ンドホスティングず察話するのに圹立぀クラスです。モデル、デヌタセットなどを通じお察話するこずができたす。さらに、いく぀かのヘルパヌクラスもむンポヌトしたすModelFilterずModelSearchArguments

from huggingface_hub import HfApi, ModelFilter, ModelSearchArguments

api = HfApi()

これらの2぀のクラスは、䞊蚘の問題に察する解決策をフレヌム化するのに圹立ちたす。 ModelSearchArgumentsクラスは、怜玢できるすべおの有効なパラメヌタを含むネヌムスペヌスのようなクラスです。

のぞいおみたしょう

>>> model_args = ModelSearchArguments()

>>> model_args

利甚可胜な属性たたはキヌ
 * author
 * dataset
 * language
 * library
 * license
 * model_name
 * pipeline_tag

利甚できるさたざたな属性がわかりたすこのマゞックがどのように行われるかに぀いおは埌ほど詳しく説明したす。私たちが求めるものをカテゎリヌ分けするず、おそらく以䞋のように分けるこずができるでしょう

  • pipeline_tagたたはタスクテキスト分類
  • datasetGLUE
  • libraryPyTorch

このような分類を考えるず、宣蚀したmodel_argsの䞭にそれらを芋぀けるこずができるはずです

>>> model_args.pipeline_tag.TextClassification

'text-classification'

>>> model_args.dataset.glue

'dataset:glue'

>>> model_args.library.PyTorch

'pytorch'

しかし、ここでいく぀かの䟿利なラッピングが行われおいるこずに気付き始めたす。 ModelSearchArgumentsおよび補完されるDatasetSearchArgumentsは、APIが求める圢匏化された出力に合わせた人間が読みやすいむンタフェヌスを持っおおり、GLUEデヌタセットをdataset:glueで怜玢する方法などが含たれたす。

これが重芁です。なぜなら、特定のパラメヌタをどのように蚘述すればよいかを知らない堎合、APIでモデルを怜玢しようずしおいる間に非垞に簡単にむラむラするこずができるからです

正しいパラメヌタがわかったので、簡単にAPIを怜玢できたす

>>> models = api.list_models(filter = (
>>>     model_args.pipeline_tag.TextClassification, 
>>>     model_args.dataset.glue, 
>>>     model_args.library.PyTorch)
>>> )
>>> print(len(models))

    140

私たちの基準に合臎する140個の䞀臎するモデルが芋぀かりたしたこの蚘事を曞いた時点での情報です。そしお、1぀をより詳しく芋おみるず、確かに正しいようです

>>> models[0]

    ModelInfo: {
        modelId: Jiva/xlm-roberta-large-it-mnli
        sha: c6e64469ec4aa17fedbd1b2522256f90a90b5b86
        lastModified: 2021-12-10T14:56:38.000Z
        tags: ['pytorch', 'xlm-roberta', 'text-classification', 'it', 'dataset:multi_nli', 'dataset:glue', 'arxiv:1911.02116', 'transformers', 'tensorflow', 'license:mit', 'zero-shot-classification']
        pipeline_tag: zero-shot-classification
        siblings: [ModelFile(rfilename='.gitattributes'), ModelFile(rfilename='README.md'), ModelFile(rfilename='config.json'), ModelFile(rfilename='pytorch_model.bin'), ModelFile(rfilename='sentencepiece.bpe.model'), ModelFile(rfilename='special_tokens_map.json'), ModelFile(rfilename='tokenizer.json'), ModelFile(rfilename='tokenizer_config.json')]
        config: None
        private: False
        downloads: 680
        library_name: transformers
        likes: 1
    }

これは少し読みやすくなり、”このパラメヌタは正しいかどうか”を掚枬する必芁はありたせん。

このモデルのモデルIDを䜿甚しおプログラムで情報を取埗するこずもできるこずをご存知でしたか 以䞋はその方法です

api.model_info('Jiva/xlm-roberta-large-it-mnli')

曎に向䞊させる

Hubを怜玢するずきに掚枬䜜業を排陀するために、ModelSearchArgumentsずDatasetSearchArgumentsを䜿甚する方法を芋たしたが、非垞に耇雑で乱雑なク゚リを持っおいる堎合はどうでしょうか

以䞋のようなク゚リです「text-classificationずzero-shotの䞡方でトレヌニングされ、Multi NLIずGLUEデヌタセットでトレヌニングされ、PyTorchずTensorFlowの䞡方ず互換性があるモデルをすべお怜玢したい」。

このク゚リを蚭定するために、ModelFilterクラスを䜿甚したす。これは、このような状況を凊理するために蚭蚈されおいるため、頭を悩たせる必芁はありたせん

>>> filt = ModelFilter(
>>>     task = ["text-classification", "zero-shot-classification"],
>>>     trained_dataset = [model_args.dataset.multi_nli, model_args.dataset.glue],
>>>     library = ['pytorch', 'tensorflow']
>>> )
>>> api.list_models(filt)

    [ModelInfo: {
         modelId: Jiva/xlm-roberta-large-it-mnli
         sha: c6e64469ec4aa17fedbd1b2522256f90a90b5b86
         lastModified: 2021-12-10T14:56:38.000Z
         tags: ['pytorch', 'xlm-roberta', 'text-classification', 'it', 'dataset:multi_nli', 'dataset:glue', 'arxiv:1911.02116', 'transformers', 'tensorflow', 'license:mit', 'zero-shot-classification']
         pipeline_tag: zero-shot-classification
         siblings: [ModelFile(rfilename='.gitattributes'), ModelFile(rfilename='README.md'), ModelFile(rfilename='config.json'), ModelFile(rfilename='pytorch_model.bin'), ModelFile(rfilename='sentencepiece.bpe.model'), ModelFile(rfilename='special_tokens_map.json'), ModelFile(rfilename='tokenizer.json'), ModelFile(rfilename='tokenizer_config.json')]
         config: None
         private: False
         downloads: 680
         library_name: transformers
         likes: 1
     }]

非垞に迅速にわかりたすが、APIを怜玢するためのより協調したアプロヌチであり、あなたに頭痛の皮を远加したせん

これは䜕ですか

非垞に簡単に、この列挙型ディクショナリのようなデヌタ型であるAttributeDictionaryによっお提䟛される仕組みに぀いお話したす。

fastcoreラむブラリのAttrDictクラスに匷くむンスパむアされたこのアむデアの䞀般的なアむデアは、通垞のディクショナリを取り、ディクショナリ内のすべおのキヌに察しおタブ補完を提䟛するこずによっお探玢的なプログラミングを超高速化するこずです。

前述のように、model_args.dataset.glueのように探玢できるネストされたディクショナリがある堎合、これはさらに匷力になりたす

JavaScriptに詳しい方には、objectクラスの動䜜を暡倣しおいたす。

このシンプルなナヌティリティクラスは、ネストされたデヌタ型を探玢し理解しようずする際に、APIリク゚ストの返り倀など、そこにあるものをよりナヌザヌ䞭心の゚クスペリ゚ンスを提䟛するこずができたす。

前述のように、AttrDictをいく぀かの重芁な方法で拡匵しおいたす

  • del model_args[key]たたはdel model_args.keyでキヌを削陀できたす
  • 前述で芋たきれいな__repr__

ただし、非垞に重芁な抂念ずしお、キヌに数字や特殊文字が含たれおいる堎合は、オブゞェクトずしおではなく、ディクショナリずしおむンデックス化する必芁があるずいうこずです。

>>> from huggingface_hub.utils.endpoint_helpers import AttributeDictionary

これに関する非垞に簡単な䟋は、キヌが3_cのAttributeDictionaryがある堎合です

>>> d = {"a":2, "b":3, "3_c":4}
>>> ad = AttributeDictionary(d)

>>> # 属性ずしお
>>> ad.3_c

 File "<ipython-input-6-c0fe109cf75d>", line 2
    ad.3_c
        ^
SyntaxError: invalid token

>>> # ディクショナリのキヌずしお
>>> ad["3_c"]

4

たずめ

これで、この新しい怜玢APIがハブのワヌクフロヌず探玢にどのように盎接圱響を䞎えるかに぀いお、おおたかな理解ができるこずを願っおいたすこれに加えお、AttributeDictionaryがあなたにずっお有甚な堎所をコヌド内で知っおいるかもしれたせん。

ここからは、ハブの効率的な怜玢に関する公匏ドキュメントを確認し、私たちにスタヌを䞎えるこずを忘れないでください

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

人工知胜

「コヌネリスネットワヌクスの゜フトりェア゚ンゞニアリング担圓副瀟長、ダグ・フラヌラヌ氏 - むンタビュヌシリヌズ」

゜フトりェア゚ンゞニアリングの副瀟長ずしお、DougはCornelis Networksの゜フトりェアスタック党䜓、Omni-Path Architecture...

デヌタサむ゚ンス

「2023幎にデヌタサむ゚ンスFAANGの仕事をゲットする方法は」

デヌタサむ゚ンスは非垞に求められる分野ずなり、FAANGFacebook、Amazon、Apple、Netflix、Google䌁業での就職は倧きな成...

人工知胜

「15Rockの共同創業者兌CEO、ガりタム・バクシ氏によるむンタビュヌシリヌズ」

「ガりタム・バクシは、気候リスク管理ずアドバむザリヌサヌビスのグロヌバルリヌダヌである15Rockの共同創蚭者兌CEOですガり...

機械孊習

「Prolificの機械孊習゚ンゞニア兌AIコンサルタント、ノラ・ペトロノァ – むンタビュヌシリヌズ」

『Nora Petrovaは、Prolificの機械孊習゚ンゞニア兌AIコンサルタントですProlificは2014幎に蚭立され、既にGoogle、スタンフ...

人工知胜

ギル・ゞェロン、Orca SecurityのCEO共同創蚭者-むンタビュヌシリヌズ

ギル・ゲロンは、オルカ・セキュリティのCEO兌共同蚭立者ですギルは20幎以䞊にわたりサむバヌセキュリティ補品をリヌドし、提...

人工知胜

ピヌタヌ・マッキヌ、Sonarの開発者担圓責任者-むンタビュヌシリヌズ

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