huggingface/transformersに関してつまづいた点をまとめた自分用のメモです。
大体は公式ドキュメントや公式フォーラムで解決することが多いです。
#TensorFlowで学習したモデルをpytorch形式にして読み込みたい
参考記事:公式ドキュメント
transformers-cli convert
で一発。
#EarlyStoppingさせたい
参考記事:公式ドキュメント
EarlyStopping以外のCallbackも実装されている。
#BertJapaneseTokenizerでNEologdなどの辞書を使いたい
参考記事:BertJapaneseTokenizerで辞書を指定・変更する
tokenizer_config.json
に下記を加えれば良い。
"mecab_kwargs":{
"mecab_dic": null,
"mecab_option": "-d 使用したい辞書のpath"
}
mecab_dic
はnull
にしておくこと。
現在のバージョンでは、デフォルト値の場合mecab_dic
+mecab_option
で設定を読み込んでしまう。
MeCab本体のインストールやmecabrc
の保存場所に注意。
#学習済みのSentencePieceを使いたい
参考記事1:huggingface / transformersを使って日本語BERTの事前学習を実施してオリジナルな言語モデルを作ってみる
参考記事2:SentencePieceでの日本語分かち書きをTransformersのパイプラインに組み込む
自作記事:huggingface/transformersのAutoTokenizerから学習済みSentencePiece Tokenizerを呼び出す
AlbertTokenizer
で読み込めばOK。special tokenやunknown token idの設定に注意。
#PipelineでTokenizerのmax_length
を設定したい
preprocessやpostprocessなどのパラメータは、Pipelineの__init__
や__call__
時に引数として渡すことで設定可能
classifier = TextClassificationPipeline(model=model, tokenizer=tokenizer, device=device, truncation=True, max_length=512)
そもそもTokenizerの__init__
時にmodel_max_length
で設定できるっぽいが、truncation
などの設定の仕方がわからない。
#Pipelineの出力にtokenized textとattention weightを加えたい
自作記事:huggingface/transformersでpipelineの出力にtokenized textとattention weightを加える
既存のPipelineを継承し、forward
とpostprocess
に変更を加えた自作Pipelineを作成する。詳細は上記記事を参照。