ホームページ >テクノロジー周辺機器 >AI >Google Colabで言語モデルをトレーニングします
Bert、Llama、Bart、およびMistral AIなどの大型言語モデル(LLMS)の微調整(LLM)は、計算的に集中的になる可能性があります。 Google Colabは地元のGPUを欠いているため、無料の代替品を提供しますが、その一時的な性質は、進捗状況を維持する上で課題を提示します。このガイドは、この制限を克服するためにGoogleドライブを活用する方法を示しています。
ソリューションには、Googleドライブを使用して中間結果とモデルチェックポイントを保存することが含まれます。 これにより、Colab環境がリセットされた後でも、作業が続くことが保証されます。 十分なドライブスペースを持つGoogleアカウントが必要です。 ドライブに2つのフォルダーを作成します:「データ」(トレーニングデータセット用)と「チェックポイント」(モデルチェックポイントを保存するため)。 コラブにグーグルドライブの取り付け:このコマンドを使用して、コラブノートブック内にGoogleドライブを取り付けることから始めます。
データとチェックポイントのコンテンツをリストしてアクセスを確認します。許可が必要な場合は、ポップアップウィンドウが表示されます。 必要なアクセス許可を付与してください。 コマンドが失敗した場合は、取り付けセルを再実行して許可を確認してください。
<code class="language-python">from google.colab import drive drive.mount('/content/drive')</code>
チェックポイントの保存と読み込み:
<code class="language-bash">!ls /content/drive/MyDrive/data !ls /content/drive/MyDrive/checkpoints</code>
ソリューションのコアは、モデルチェックポイントを保存およびロードする機能を作成することにあります。 これらの機能は、モデルの状態、オプティマイザー、スケジューラ、および「チェックポイント」フォルダーに関連するその他の情報をシリアル化します。
チェックポイント関数を保存:
チェックポイントの負荷関数:トレーニングループに統合されている
<code class="language-python">import torch import os def save_checkpoint(epoch, model, optimizer, scheduler, loss, model_name, overwrite=True): checkpoint = { 'epoch': epoch, 'model_state_dict': model.state_dict(), 'optimizer_state_dict': optimizer.state_dict(), 'scheduler_state_dict': scheduler.state_dict(), 'loss': loss } direc = get_checkpoint_dir(model_name) #Assumed function to construct directory path if overwrite: file_path = os.path.join(direc, 'checkpoint.pth') else: file_path = os.path.join(direc, f'epoch_{epoch}_checkpoint.pth') os.makedirs(direc, exist_ok=True) # Create directory if it doesn't exist torch.save(checkpoint, file_path) print(f"Checkpoint saved at epoch {epoch}") #Example get_checkpoint_dir function (adapt to your needs) def get_checkpoint_dir(model_name): return os.path.join("/content/drive/MyDrive/checkpoints", model_name) </code>
これらの関数をトレーニングループに統合します。ループは、トレーニングを開始する前に既存のチェックポイントをチェックする必要があります。チェックポイントが見つかった場合、保存されたエポックからのトレーニングを再開します。 この構造により、コラブセッションが終了した場合でも、トレーニングのシームレスな再開が可能になります。 特定のニーズに合わせて、
関数とチェックポイントファイルの命名規則を適応させることを忘れないでください。 この改良された例は、潜在的なエラーをより優雅に処理し、より堅牢なソリューションを提供します。 プレースホルダー関数(<code class="language-python">import torch import os def load_checkpoint(model_name, model, optimizer, scheduler): direc = get_checkpoint_dir(model_name) if os.path.exists(direc): #Find checkpoint with highest epoch (adapt to your naming convention) checkpoints = [f for f in os.listdir(direc) if f.endswith('.pth')] if checkpoints: latest_checkpoint = max(checkpoints, key=lambda x: int(x.split('_')[-2]) if '_' in x else 0) file_path = os.path.join(direc, latest_checkpoint) checkpoint = torch.load(file_path, map_location=torch.device('cpu')) model.load_state_dict(checkpoint['model_state_dict']) optimizer.load_state_dict(checkpoint['optimizer_state_dict']) scheduler.load_state_dict(checkpoint['scheduler_state_dict']) epoch = checkpoint['epoch'] loss = checkpoint['loss'] print(f"Checkpoint loaded from epoch {epoch}") return epoch, loss else: print("No checkpoints found in directory.") return 0, None else: print(f"No checkpoint directory found for {model_name}, starting from epoch 1.") return 0, None </code>、
)を実際の実装に置き換えることを忘れないでください。
以上がGoogle Colabで言語モデルをトレーニングしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。