システム最終投稿の方法
システム最終投稿は,質問応答システムの Docker イメージを,Artifact Registry のリポジトリにアップロードすることにより行っていただきます.アップロード方法についての詳細は,AI王 Slack ワークスペース内にて告知いたします.
Docker イメージの要件
投稿される Docker イメージは,以下の要件をすべて満たすものとします.
要件1: 推論スクリプト ~/submission.sh を含むこと
Docker イメージは,与えられる質問データに対して推論を行うスクリプト ~/submission.sh が含まれており,以下のコマンドで実行可能であることとします.
ここで, <input_file> はシステムに入力される質問データで,以下のような形式の,質問ID qid と質問 question を要素にもつ JSON Lines (jsonl) フォーマットであるとします.
出力する <output_file> は,以下のような形式の,質問ID qid とシステムが予測した解答 prediction を要素にもつ JSON Lines (jsonl) フォーマットであるとします.
なお、出力する <output_file> は, ~/submission.sh を実行するユーザと同じユーザが直接書き込むこととします.異なるユーザが書き込んだ場合,permission error により自動評価が失敗します(対象となる投稿は評価失敗によりリーダーボードの評価対象にはなりません).
要件2: モデルの動作に必要なすべてのファイルを含むこと
Docker イメージには,モデルの動作に必要なファイル(単語ベクトルや文書集合など)がすべて含まれており,それ単体で動作可能であることとします.
Docker イメージ内から,イメージの外側にあるファイルをダウンロードすることなどは不可とします.
(実際に評価時には外部との通信は全て遮断される設定になっています)
<注意事項>
第3回コンペティションでは,ご提出いただく Docker イメージのサイズに制限は設けませんが,あまりにもサイズが大きい際には Docker イメージのアップロードに時間がかかったり失敗したりする可能性が高くなりますので,出来る限りモデルの動作に不必要なファイルは省いていただきますよう,お願いいたします.
参考: Docker イメージのサイズは,以下のコマンドで確認することができます.
Docker イメージの構築例
AIO3_FiD_baseline を用いた例
FiD を用いたベースラインシステム の Docker イメージの構築例を以下に示します.
1. 質問応答システムの動作に必要なファイルの準備
推論時にシステムが参照できるよう,モデルや文書ベクトルへのパスを submission.sh ファイルに記載します.
詳しくは submission.sh について をご覧ください.
2. Docker イメージのビルド
Dockerfile を用いて,Docker イメージをビルドします.
Tips: 以下の工夫により,イメージのサイズを削減することができます.
apt-get install する時は最後に rm -rf /var/lib/apt/lists/* を行う
pip install する時は --no-cache-dir を指定し,キャッシュファイルが生成されるのを防ぐ
そのほか,公式の Best practices for writing Dockerfiles も参考にしてください.
システム最終評価時は外部への通信が遮断されるため,Docker イメージ内で Hugging Face Transformers などのライブラリを用いる場合は,実行時にモデルやトークナイザがダウンロードされることがないよう,あらかじめファイルがダウンロードされている必要があります.あわせて,ライブラリが外部への通信を試みることによるエラーが発生しないよう,設定をしておく必要があります.
例えば, Dockerfile を用いてイメージをビルドする場合には,以下のような内容を Dockerfile に記述することで,必要なファイルをあらかじめダウンロードし,Docker イメージに含めることができます.
3. Docker イメージの動作確認
開発用データセット aio_02_dev_unlabeled_v1.0.jsonl を使って,Docker イメージの動作確認をします.
Note: --gpus オプションは NVIDIA Container Toolkit がインストールされた環境で有効です.
ここで, <input_dir> は,開発用データセット `aio_02_dev_unlabeled_v1.0.jsonl` が置かれたローカルのディレクトリを, <output_dir> はシステムの予測結果を書き出すローカルのディレクトリを,それぞれ完全パスで指定します.
Docker イメージの実行が終わったら,ローカルの <output_dir>/predictions.jsonl にシステムの予測結果が保存されていることを確認してください.
最終評価の方法
評価尺度
システム最終評価では,未公開の評価用データ (1,000問) を用いて,投稿されたシステムの解答精度を評価します.
まず自動評価により,あらかじめテストデータで用意された正解と,システムが予測した解答の完全一致 (exact match) により計算します.ただし,ここでの完全一致は,正解とシステムが予測した解答のそれぞれに対し,以下の正規化処理を行った上で,文字列の一致を評価します.
空白の削除
また,正解の別名や表記揺れが考えられる場合など,1つの質問に正解が複数用意されている場合は,1つでも完全一致するものがあれば正解とみなします.
自動評価が終了したのち,すべてのシステムの解答の人手評価を行い,最終的な順位を決定します.
評価用マシンのスペック
システム最終評価は,GCP上に インスタンスを用意して行います.スペックは以下の通りです.
vCPU 12, Memory 78GB + Nvidia Tesla V100 (Memory 16GB)x1
(なお,参加者の参加状況に応じて今後変更される可能性があります.)
なお,以上のルールは,参加者の参加状況に応じて今後変更される可能性があります.