[基本NLP]Google Cloud-TPUとKoBigBirdモデルのKorQuad 2を利用する.0 Fine-tuning
NLP業界から見ると、私たちのよく知っているすべての発売会社は、巨大言語モデル(LLM)を先を争って発表しています.先ごろグーグルで公開されたPalm(Pathways Language Model)のパラメータはGPT-3(1750億個)の約3倍(5400億個)だった.
いずれにしても,長年にわたって,自然言語処理分野のこれらの事前訓練された言語モデルが基礎となり,必要となってきた.
ほとんどの場合、GPU演算を必要とするモデリングにはCollabが使用されます.(ただし、私は会社の口座でGCPのgpuの例を勝手に使っていますが、私はやはり良心的に人の顔色を見ています.👀 )
ただし、アカウントが無料の場合、GPUの低パフォーマンスとvramとセッション時間の制限が少ないため、不便を感じる可能性があります.(Colab Proを使うのは少し良いですが、これもオンデマンドではなく、セッション制限があります)
今回のリリースでは、クラウドTPUを無料で使用する方法について説明します.
次に、KoBigBirdモデルを使用してKorQuad 2データセットを調整する方法を紹介します(クラウドTPUではパーソナルPC/Colabへのアクセスが困難です).
1. TRC(TPU Research Cloud)
Google Cloudプロジェクトの作成
自分のGCPコンソールにインポートして新しいアイテムを作成すればよい.プロジェクトを作成すると、3番目のフォームで作成する必要がある「プロジェクト番号」(Project Number)が表示されます.
クラウドTPU APIの有効化
GCPコンソール→Compute Engine→TPUに移動してTPU APIを有効にします.
フォームにアイテム番号を作成してコミットする
「リンク」(Link)フォームで作成し、1で作成したアイテムのアイテム番号を発行します.
送信後に待機すると、次のように別のメールが届きます.このメールを受け取ったら、クラウドTPUは今使えます!
ここで注意しなければならないのは、この30日間の無料期間中、以下の3つのTPUノードを使用することができることです. 5 on-demand Cloud TPU v2-8 device(s) in zone us-central1-f 100 preemptible Cloud TPU v2-8 device(s) in zone us-central1-f 5 on-demand Cloud TPU v3-8 device(s) in zone europe-west4-a 次に作成する仮想マシンインスタンスとTPUノードは、上記の3つの情報に対して設定する必要があります.
(TPUタイプおよび領域については、関連リンクを参照してください.)
2.クラウドTPU設定
仮想マシンインスタンス接続
上記で作成したVMインスタンスにアクセスするには、次のコマンドを実行します. TPU node ip
TPUノードのIPをVMインスタンスに通知する必要があるため、IPアドレスを表示します.
コマンド実行時の出力値 TPU IPアドレス設定
torch-xla-1.8.1 venvをアクティブにした後、上記で確認した TPU check
次の簡単なスクリプトを実行して、TPU接続が正しいかどうかを確認します. 3. KorQuAD 2.0 Finetuning by KorBigBird
まず、必要なパッケージをインストールします.
次のスクリプトを実行して、問題解決に関連するデータセットのダウンロード操作を行います.
(TyDiQAとKorQuad 2.1データセットをダウンロードします.)
(非常に時間がかかるタスクなので、バックグラウンド実行を使用して結果値を中間的に表示することをお勧めします.) を学習すると、モデルは
いずれにしても,長年にわたって,自然言語処理分野のこれらの事前訓練された言語モデルが基礎となり,必要となってきた.
ほとんどの場合、GPU演算を必要とするモデリングにはCollabが使用されます.(ただし、私は会社の口座でGCPのgpuの例を勝手に使っていますが、私はやはり良心的に人の顔色を見ています.👀 )
ただし、アカウントが無料の場合、GPUの低パフォーマンスとvramとセッション時間の制限が少ないため、不便を感じる可能性があります.(Colab Proを使うのは少し良いですが、これもオンデマンドではなく、セッション制限があります)
今回のリリースでは、クラウドTPUを無料で使用する方法について説明します.
次に、KoBigBirdモデルを使用してKorQuad 2データセットを調整する方法を紹介します(クラウドTPUではパーソナルPC/Colabへのアクセスが困難です).
1. TRC(TPU Research Cloud)
TPUを申請してクラウド(TRC)を検索することで、誰でもクラウドTPUを使用することができます.私は2回申請したことがありますが、申請後の最終承認には約2-3時間かかります.
1.1. TRC申請
TRCホームページのApply nowボタンをクリックして申請します.簡単な記入用紙が表示され、内容を記入して提出した後、初めて申請を完了します.
1.2. GCPプロジェクトを作成し、TPU APIを有効にする
しばらくお待ちください.クラウドTPUを使用する手順を含む次のメールが届きます.
Google Cloudプロジェクトの作成
自分のGCPコンソールにインポートして新しいアイテムを作成すればよい.プロジェクトを作成すると、3番目のフォームで作成する必要がある「プロジェクト番号」(Project Number)が表示されます.
クラウドTPU APIの有効化
GCPコンソール→Compute Engine→TPUに移動してTPU APIを有効にします.
フォームにアイテム番号を作成してコミットする
「リンク」(Link)フォームで作成し、1で作成したアイテムのアイテム番号を発行します.
ここで注意しなければならないのは、この30日間の無料期間中、以下の3つのTPUノードを使用することができることです.
(TPUタイプおよび領域については、関連リンクを参照してください.)
2.クラウドTPU設定
2.1. VMインスタンスとTPUノードの作成
🔥 Warning!🔥
TRCはTCPサービスのみを無料でサポートし、vmインスタンスの作成時にvmインスタンスを使用して課金します.
本実証ではKorBigBird githubの実験環境と同じ構成のためにKorbigBird finetunningにTPU v 3を配置した.8を使用します.
コンソールに仮想マシンインスタンスとTPUノードを直接作成できますが、gcloud shellでコマンドで作成できます.(注:Run a calculation on a Cloud TPU VM by using PyTorch)# Create Compute Engine VM instance
gcloud compute instances create jaehyeong-tpu-research-vm \
--zone=europe-west4-a \
--machine-type=n1-standard-16 \
--image-family=torch-xla \
--image-project=ml-images \
--boot-disk-size=200GB \
--scopes=https://www.googleapis.com/auth/cloud-platform
TPU v3.8地域をヨーロッパ-west 4-aに設定し、マシンタイプは少なくともn 1-standard-16、bootdiskは少なくとも200 GBで、適切なテストを行うことを推奨します.# Create TPU node
gcloud compute tpus create jaehyeong-tpu-research-node \
--zone=europe-west4-a \
--network=default \
--version=pytorch-1.8 \
--accelerator-type=v3-8
TPUノード上の領域もeuropean-west 4-aとして指定され、アクセラレータタイプはv 3-8として指定される.
上記の手順が完了すると、コンソールには、次のように各仮想マシンインスタンスとTPUが登録されていることが表示されます.
2.2. 仮想マシンインスタンスへのTPUの接続
VMインスタンスとTPUノードはまだ存在するため、VMインスタンスTPUの存在を通知する必要があります.
このように、TPUに関連するすべての計算は、仮想マシンインスタンスではなくTPUノード上で行われる.
# Create Compute Engine VM instance
gcloud compute instances create jaehyeong-tpu-research-vm \
--zone=europe-west4-a \
--machine-type=n1-standard-16 \
--image-family=torch-xla \
--image-project=ml-images \
--boot-disk-size=200GB \
--scopes=https://www.googleapis.com/auth/cloud-platform
# Create TPU node
gcloud compute tpus create jaehyeong-tpu-research-node \
--zone=europe-west4-a \
--network=default \
--version=pytorch-1.8 \
--accelerator-type=v3-8
上記で作成したVMインスタンスにアクセスするには、次のコマンドを実行します.
gcloud compute ssh {vm 인스턴스 명} --zone=europe-west4-a
TPUノードのIPをVMインスタンスに通知する必要があるため、IPアドレスを表示します.
コマンド実行時の出力値
ipAddress
の値を確認します.gcloud compute tpus describe {TPU 노드 명} --zone=europe-west4-a
torch-xla-1.8.1 venvをアクティブにした後、上記で確認した
ipAddress
を優先パラメータとして登録します.conda activate torch-xla-1.8.1
export TPU_IP_ADDRESS={ipAddress}
export XRT_TPU_CONFIG="tpu_worker;0;$TPU_IP_ADDRESS:8470"
次の簡単なスクリプトを実行して、TPU接続が正しいかどうかを確認します.
import torch
import torch_xla.core.xla_model as xm
dev = xm.xla_device()
t1 = torch.randn(3,3,device=dev)
t2 = torch.randn(3,3,device=dev)
print(t1 + t2)
以下の出力値が発生した場合、TPUは正常に計算されます.tensor([[-0.2121, 1.5589, -0.6951],
[-0.7886, -0.2022, 0.9242],
[ 0.8555, -1.8698, 1.4333]], device='xla:1')
3. KorQuAD 2.0 Finetuning by KorBigBird
3.1. BigBird
通常、BERTシリーズのモデルは、512個の入力シーケンスを受信することができる.
これはTransformerモデルにおけるself-attention演算が入力シーケンス全体を参照して演算されるfull attentionベースであるため,演算量は常に入力シーケンス長の二乗に比例する.したがって、512個以上のタグのテキストを入力する場合、通常、512個以上のタグのタグを切断する必要がある.
ただし、MRCタスクがコンテキスト全体に基づいて答えをエクスポートする必要がある場合、上記の方法では、答えを含む部分が切断される可能性があります.したがって、この場合、ドキュメント全体を最大入力シーケンスの速度で参照します.(たとえば、入力されたドキュメントの長さが1024より大きい場合、入力シーケンスが最大512のモデルは、ドキュメントを2つのステップにまたがらせます.)
BigBirdモデルは上記の制限を克服するために提案されたモデルである.
BigBirdモデルでは、入力シーケンスとして最大4096個のタグを受信することができ、BERTの8倍である.これはBigBirdが完全に注意するのではなくSpare-actionsに基づいているためかもしれない.
3.2. KoBigBird finetuning
多くの研究者が使用しているKoELECTRAモデルを共有した独白氏はKoBigBirdモデルの位置づけも行った.
まず,KoBigBirdモデルをクローニングした.git clone https://github.com/monologg/KoBigBird.git
その後、KoBigBird/finetune
ディレクトリに移動します.このディレクトリには、plmとしてKoBigBirdモデルを使用して分類および問答タスクを実行できるデータと学習コードが含まれています.
git clone https://github.com/monologg/KoBigBird.git
まず、必要なパッケージをインストールします.
pip install -r requirements.txt
次のスクリプトを実行して、問題解決に関連するデータセットのダウンロード操作を行います.
(TyDiQAとKorQuad 2.1データセットをダウンロードします.)
bash download_qa_dataset.sh
KoBigBird/finetune/scripts
ディレクトリには、様々なデータセットのfinetunningスクリプトファイルが含まれています.ここでは、run_korquad_2.sh
ファイルを実行してKorQuadを最適化します.(非常に時間がかかるタスクなので、バックグラウンド実行を使用して結果値を中間的に表示することをお勧めします.)
bash scripts/run_korquad_2.sh
KoBigBird/finetune/output
ディレクトリに保存されます.Reference
この問題について([基本NLP]Google Cloud-TPUとKoBigBirdモデルのKorQuad 2を利用する.0 Fine-tuning), 我々は、より多くの情報をここで見つけました https://velog.io/@jaehyeong/Basic-NLP-Google-Cloud-TPU와-KoBigBird모델을-활용한-KorQuAD2.0-Fine-tuningテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol