ピットレコードを踏む-ベースラインをトレーニングセッションに提出するプロセス全体を覚えておいてください

目的

  Datawhaleのリーダーが提供するベースライントレーニングモデルに従って、Dockerを介してTianchiコンテストに提出し、独自のスコアを取得します。初心者にとっては思ったほど簡単ではないので、ここにピットを踏んだ歴史を記録します。先生方、アドバイスありがとうございます!

バックグラウンド

個人構成

  • オペレーティングシステム:windows10 Professional Editionヒント:Home EditionのインストールDockerは異なります)
  • グラフィックカード:RTX3070
  • 環境:pytorch1.7.1(GPUバージョン)+ CUDA11.1 + Pycharm + WindowsバージョンDocker

チャレンジ要件

  ヒント:このベースラインチュートリアルに基づいて、構成プロセスについては後で詳しく説明します。

マシンはベースラインを実行します

pytorch構成

  • WindowsバージョンのAnaconda + Pytorch + Pycharm + Cuda構成については、前に要約したブログを参照してください:アドレス
  • CuDNNの構成については、他の要約を参照してください。アドレス

  多くのピットを踏んだまとめ〜

準備リンク

  git cloneモデルファイルはローカルマシン用で、プロジェクトの名前tianchi-multi-task-nlpは、実行環境はpytorch仮想環境、コンパイラはPycharmです。

トランスフォーマーとsklearnを追加します

  これらの2つのアイテムは、pytorch仮想環境では使用できません。pipを使用してインストールする必要があります。ただし、これら2つのパッケージをcmdでグローバルに直接インストールするのではなく、pytorch仮想環境にインストールする必要があることに注意してください。
  オープンはAnaconda->powershell prompt、私たちは合格powershell promptpytorch仮想環境に。

conda activate <pytorch环境名称(自己命名)> #激活虚拟环境
pip install transformers #安装transformers
pip install sklearn      #安装sklearn

  インストール結果を図に示します。
ここに画像の説明を挿入

データファイルとバート構成

  中国の事前訓練を受けたBERTモデルをダウンロードするにはbert-base-chinese、アドレス:https://huggingface.co/bert-base-chinese/tree/main
ここに画像の説明を挿入
  だけのダウンロードconfig.jsonvocab.txtおよびpytorch_model.bin、とにこれらの3つのファイルを置くtianchi-multi-task-nlp/bert_pretrain_modelフォルダ。

ここに画像の説明を挿入
  競争データセットをダウンロードし、tianchi-multi-task-nlp/tianchi_datasets/数据集名字/以下の3つのデータセットを入力します。

  • OCEMOTION / total.csv:http://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531841/OCEMOTION_train1128.csv
  • OCEMOTION / test.csv:http://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531841/b/ocemotion_test_B.csv
  • TNEWS / total.csv:http://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531841/TNEWS_train1128.csv
  • TNEWS / test.csv:http://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531841/b/tnews_test_B.csv
  • OCNLI / total.csv:http://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531841/OCNLI_train1128.csv
  • OCNLI / test.csv:http://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531841/b/ocnli_test_B.csv

  サンプルファイルディレクトリ:

tianchi-multi-task-nlp / tianchi_datasets / OCNLI / total.csv
tianchi-multi-task-nlp / tianchi_datasets / OCNLI / test.csv

  フォルダを作成し、データセットの名前を個別に変更してください〜

モデルトレーニングプロセス

データの準備

  トレーニングセットと検証セットを分離します。デフォルトの検証セットはそれぞれ3000個のデータであり、パラメーターは自分で変更できます。

generate_data.pyファイルを実行します

  ここで、windows10システムで問題が発生する
ここに画像の説明を挿入
  可能性があります。コーディングの問題である可能性があります。解決策は次の場所に追加することです。

,encoding='utf-8'

また、.csvこのパラメーターは、すべてのサフィックス(データセットファイル)のに追加する必要があります。
ここに画像の説明を挿入

トレーニング

ホストを適応させるためにbatch_sizeを変更します

train.pyファイルを  実行してモデルをトレーニングします。初期設定:

train(epochs=20,batchSize=16, device='cuda:0', lr=0.0001, use_dtp=True, pretrained_model=pretrained_model, tokenizer_model=tokenizer_model, weighted_loss=True)

主な関心事ここbatchSizeとはepochsBERTがメモリを食べているので、私たちは、に基づいて、マシンの構成に対応するモデルパラメータを調整する必要があります。私のグラフィックカードはですRTX3070 显存8G
ここに画像の説明を挿入
  そして私は問題に遭遇しました:相談した後、私はより参照の重要性があるスタックオーバーフローに関する質問があることに気づきました。現在の状況に基づいて、私はそれだけを減らすことにしましたbatchSize

batchSize=8

その結果、私は目を覚ましてモデルを実行します〜
  さらに、検証セットで平均f1スコアが最も高いモデルが保存され./saved_best.ptます。
ここに画像の説明を挿入

結果を生成する

  トレーニング済みモデル./saved_best.ptを使用して結果生成します。

inference.pyファイルを実行します

パック予測結果

  直接実行:

zip -r ./result.zip ./*.json

‘zip‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件エラーが発生します。これは、Windowsシステムzip(Linux)にはコマンドがないためです。しかし、我々は、ダウンロードすることができます内のファイルをGnuWin32exe、デフォルトでインストールしてください。環境変数を追加できるように、インストールパスを覚えておく必要があることに注意してください
ここに画像の説明を挿入
  右键此电脑->属性->高级系统设置->环境变量追加パス。コマンドを使用するには、コンピューターを再起動します系统变量PathGnuWin32\bin
ここに画像の説明を挿入
zip
ここに画像の説明を挿入

  この時点で、このマシンでベースラインをトレーニングするプロセスは完了です。

Dockerコミット

  繰り返しになりますが、Dockerのインストールプロセスでは、win10Professionalバージョンとホームバージョンの間に大きな違いがあります。私のホストはwin10Professionalバージョンです。さらに、dockerのコマンドライン操作はすべてwindows powershell実行されており、必要に応じて管理者として実行されます。

Dockerのインストール

公式ウェブサイト  直接アクセスして、デスクトップバージョンにWindowsをインストールします。Dockerを初めて実行すると、Hyper-Vの読み込みに常に失敗します。新しいホストで仮想化が有効になっていないことがわかりました(タスクマネージャーのパフォーマンスページで確認できます)。ホストはASUSであるためマザーボード、ダウンロードする必要があります起動時に、を押してF2BIOSインターフェイスに入り、仮想化を開きます。Dockerに入った後、問題は発生しませんでした。
  Dockerを初めて実行するとき、hello-worldイメージをテストするときに、windows powershellエラーが報告されましたunable to find imageこれは、Dockerがhello-worldイメージをローカルで検出せず、Dockerウェアハウスからイメージをプルしなかったことを意味します。Dockerサーバーは海外にあるため(壁を覆す必要があります)、中国では通常イメージをプルできません。そのため、Docker用に国内のAlibabaCloudイメージアクセラレータをセットアップする必要があります。

{
    
     
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"] 
}

ここに画像の説明を挿入
再起動後、通常どおりhello-worldイメージをプルできます。

ネイティブDockerプッシュ

  私が使用しているリファレンスチュートリアルを提供し、それらを注意深く研究すれば、利益が得られます。私も自分の道を譲ります〜

  :一部の個人倉庫IDに関連するスクリーンショットは、一時的にリリースするのに不便です。ご理解ください。参照は実質的にディスクである可能性があります

行く方法

  入力するクラウドミラー倉庫を〜、独自のミラー倉庫と名前空間を作成し、作成した倉庫を入力し、あなたが望むものを含んでいる操作ガイドを見つける
  今、あなたはフォルダ(提出する準備ができているsubmission:)
ここに画像の説明を挿入
ここに注意を払うを置くためにそれにパッケージ化さresult.zipsubmissionています、さもなければあなたはコンテストを提出する機会を無駄にするかもしれません。これは、競合他社の要件によるものです。
ここに画像の説明を挿入
  次にフォルダーにwindows powershellcd)を入力してsubmission、次の操作を実行します。\

  1. ログインする
docker login --username=用户名 registry.cn-shenzhen.aliyuncs.com

:ユーザー名は、自作倉庫の詳細ページ下部にある操作ガイドに記載されています。

  1. イメージを構築する
docker build -t registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0 .

registry.~~~自分の倉庫の住所に置き換えてください(自分の倉庫の詳細ページを確認してください)。アドレスの後に1.0自分で指定したバージョン番号、各ビルドのイメージを区別するために使用されます。最後に.、ミラーを構築するためのパスがありますが、これは省略できません

  1. 画像をウェアハウスにプッシュします
docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0

docker push registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0

ImageIdではDocker桌面->左侧Images栏->镜像名列表-> <registry.~~~:1.0> -> IMAGE IDregistry.~~~上記の動作と一致しているあなた自身の倉庫(自分の倉庫の詳細ページをご確認ください)、のアドレスを交換してください。
  この時点で、Dockerプッシュが完了し、次に送信できます。

コンテストの提出

  送信インターフェースを図に示します。
ここに画像の説明を挿入

  ちょうど今、パッケージ化されたresult.zipファイルsubmissionrun.sh同じディレクトリに置く必要があると言いました初めて提出したときはやらなかったので、提出後は結果が出ませんでした。ここに画像の説明を挿入
  ログを確認したところ、resultファイルを開くことができなかったことがわかりました
ここに画像の説明を挿入
これは2つの機会の無駄でした
  この時点で、私はタイトルマッチの要件がありますresult.zipし、run.sh唯一の最後のチャンスが今日、私はまだ自分自身の判断を信頼し、同じディレクトリに置くことを選択し、その後、再構築された2.0バージョンで、再びミラーリポジトリにプッシュ。結果は正常に送信され、ベースラインスコアを使用して、スクリーンショットをすばやく保存します〜
ここに画像の説明を挿入
もちろん、最適化への道は始まったばかりです。

ありがとう

  この機会を提供してくれたDatawhaleに感謝します!

参照

おすすめ

転載: blog.csdn.net/weixin_40807714/article/details/113856151