ホームページ > バックエンド開発 > Python チュートリアル > .NET Core、Python、Azure を使用した大規模言語モデル (LLM) の微調整

.NET Core、Python、Azure を使用した大規模言語モデル (LLM) の微調整

Susan Sarandon
リリース: 2025-01-14 07:11:42
オリジナル
1013 人が閲覧しました

Fine-Tuning Large Language Models (LLMs) with .NET Core, Python, and Azure

目次

  1. はじめに
  2. なぜ大規模な言語モデルを微調整するのでしょうか?
  3. ソリューションの概要
  4. 環境設定
  5. Python を使用したトレーニングと微調整
  6. 微調整されたモデルを .NET Core に統合する
  7. Azure へのデプロイ
  8. ベストプラクティス
  9. 結論

  1. はじめに

大規模言語モデル (LLM) は、人間のようなテキストを理解して生成する能力で広く注目を集めています。ただし、多くの組織は、汎用モデルでは完全には捕捉できない可能性のある、独自のドメイン固有のデータ セットと語彙を持っています。 微調整により、開発者はこれらの大規模なモデルを特定の環境や業界に適応させ、精度と関連性を向上させることができます。

この記事では、Python を使用して LLM を微調整し、その結果のモデルを .NET Core C# アプリケーションに統合してデプロイする方法について説明します。スケーラビリティと利便性を高めるために、すべてを Microsoft Azure 上で実行します。


  1. なぜ大規模な言語モデルを微調整するのでしょうか?

  2. ドメインの特異性: LLM は、業界固有の用語、製品名、専門用語を使用するように微調整できます。

  3. パフォーマンスの向上: 微調整により、多くの場合、エラーが減少し、顧客サービス、調査、分析などのユースケースでの関連性が向上します。

  4. コストの削減: モデルを最初から構築する代わりに、既存の強力な LLM をカスタマイズできます。

  5. 効率の向上: 事前トレーニングされた重みを利用し、最終レイヤーまたはパラメーターのみを調整することで、プロセスを高速化します。


  1. ソリューションの概要

コンポーネントとテクノロジー

  1. 微調整用の Python

    • 一般的に使用されるライブラリ (例: Hugging Face Transformers、PyTorch)
    • 事前トレーニングされたモデルのロードと調整のプロセスを簡素化しました
  2. 統合用の .NET Core C#

    • モデルを微調整するためのバックエンド サービスまたは API を公開する
    • 多くのエンタープライズ開発者に馴染みのある、厳密に型指定された言語
  3. Azure サービス

    • トレーニングとモデル管理のための Azure Machine Learning
    • データとモデル アーティファクト用の
    • Azure Storage
    • Azure App Service または .NET Core アプリケーションをホストするための Azure Function
    • Azure Key Vault (オプション) 資格情報を保護するため

  1. 環境設定

前提条件

  • Azure サブスクリプション: Machine Learning Workspace や App Service などのリソースを作成するために必要です。
  • Python 3.8 : モデルの微調整のためにローカルにインストールされます。
  • .NET 6/7/8 SDK: .NET Core C# アプリケーションの作成と実行用。
  • Visual Studio 2022 または Visual Studio Code: 推奨される IDE。
  • Azure CLI: ターミナルを介して Azure サービスを構成および管理するために使用されます。
  • Docker (オプション): 必要に応じてアプリケーションをコンテナ化するために使用できます。

  1. Python を使用したトレーニングと微調整

この例では、最も広く採用されている LLM 微調整ライブラリの 1 つである Hugging Face Transformers を使用します。

5.1 仮想環境のセットアップ

<code>python -m venv venv
source venv/bin/activate  # 在 Windows 上:venv\Scripts\activate</code>
ログイン後にコピー
ログイン後にコピー

5.2 依存関係をインストールする

<code>pip install torch transformers azureml-sdk</code>
ログイン後にコピー

5.3 Azure Machine Learning ワークスペースを作成する

  1. リソース グループ および ワークスペース:
<code>   az group create --name LLMFinetuneRG --location eastus
   az ml workspace create --name LLMFinetuneWS --resource-group LLMFinetuneRG</code>
ログイン後にコピー
  1. ワークスペースに接続するためのローカル環境を構成します (config.json ファイルまたは環境変数を使用)。

5.4 微調整スクリプト (train.py)

<code>import os
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer
from azureml.core import Workspace, Run

# 连接到 Azure ML
ws = Workspace.from_config()
run = Run.get_context()

model_name = "gpt2"  # 示例模型
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# 加载自定义数据集(本地或来自 Azure 存储)
# 示例:Azure ML 中的文本文件或数据集
train_texts = ["此处输入您的特定领域文本..."]  # 简化版
train_encodings = tokenizer(train_texts, truncation=True, padding=True)

class CustomDataset(torch.utils.data.Dataset):
    def __init__(self, encodings):
        self.encodings = encodings
    def __len__(self):
        return len(self.encodings["input_ids"])
    def __getitem__(self, idx):
        return {k: torch.tensor(v[idx]) for k, v in self.encodings.items()}

train_dataset = CustomDataset(train_encodings)

training_args = TrainingArguments(
    output_dir="./results",
    num_train_epochs=3,
    per_device_train_batch_size=2,
    save_steps=100,
    logging_steps=100
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
)

trainer.train()

# 保存微调后的模型
trainer.save_model("./fine_tuned_model")
tokenizer.save_pretrained("./fine_tuned_model")</code>
ログイン後にコピー

5.5 Azure へのモデルの登録

<code>from azureml.core.model import Model

model = Model.register(
    workspace=ws,
    model_path="./fine_tuned_model",
    model_name="myFineTunedLLM"
)</code>
ログイン後にコピー

この時点で、簡単にアクセスしてバージョンを管理できるように、微調整されたモデルは Azure Machine Learning に保存されます。


  1. 微調整されたモデルを .NET Core に統合する

6.1 .NET Core Web API プロジェクトを作成する

<code>dotnet new webapi -n FineTunedLLMApi
cd FineTunedLLMApi</code>
ログイン後にコピー

6.2 依存関係を追加する

    Azure エンドポイントまたはローカル推論 API を呼び出すための
  • HttpClient
  • Newtonsoft.Json (シリアル化に JSON.NET を使用したい場合)
  • Azure リソースへの安全なアクセスのための
  • Azure.Storage.Blobs または Azure.Identity
<code>dotnet add package Microsoft.Extensions.Http
dotnet add package Microsoft.Azure.Storage.Blob
dotnet add package Newtonsoft.Json</code>
ログイン後にコピー

6.3 ModelConsumerService.cs

微調整されたモデルを Web サービスとしてデプロイしていると仮定します (たとえば、Azure Container Instance または Azure ML のカスタム エンドポイントを使用)。次のコード スニペットは、サービスを呼び出して完了結果を取得します。

<code>using Newtonsoft.Json;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

public class ModelConsumerService
{
    private readonly HttpClient _httpClient;

    public ModelConsumerService(IHttpClientFactory httpClientFactory)
    {
        _httpClient = httpClientFactory.CreateClient("FineTunedModel");
    }

    public async Task<string> GetCompletionAsync(string prompt)
    {
        var requestBody = new { prompt = prompt };
        var content = new StringContent(
            JsonConvert.SerializeObject(requestBody),
            Encoding.UTF8, 
            "application/json");

        var response = await _httpClient.PostAsync("/predict", content);
        response.EnsureSuccessStatusCode();
        return await response.Content.ReadAsStringAsync();
    }
}</code>
ログイン後にコピー

6.4 LLMController.cs

<code>using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;

[ApiController]
[Route("[controller]")]
public class LLMController : ControllerBase
{
    private readonly ModelConsumerService _modelService;

    public LLMController(ModelConsumerService modelService)
    {
        _modelService = modelService;
    }

    [HttpPost("complete")]
    public async Task<IActionResult> CompletePrompt([FromBody] PromptRequest request)
    {
        var result = await _modelService.GetCompletionAsync(request.Prompt);
        return Ok(new { Completion = result });
    }
}

public class PromptRequest
{
    public string Prompt { get; set; }
}</code>
ログイン後にコピー

6.5 .NET Core アプリケーションの構成

Program.cs または Startup.cs:

<code>var builder = WebApplication.CreateBuilder(args);

// 注册 HttpClient
builder.Services.AddHttpClient("FineTunedModel", client =>
{
    client.BaseAddress = new Uri("https://your-model-endpoint/");
});

// 注册 ModelConsumerService
builder.Services.AddTransient<ModelConsumerService>();

builder.Services.AddControllers();
var app = builder.Build();

app.MapControllers();
app.Run();</code>
ログイン後にコピー

  1. Azure へのデプロイ

  2. Azure App Service:

    • 多くの .NET Core アプリケーションにとって、これが最も簡単なパスです。
    • Azure portal または CLI 経由で、新しい Web アプリ を作成します。
<code>python -m venv venv
source venv/bin/activate  # 在 Windows 上:venv\Scripts\activate</code>
ログイン後にコピー
ログイン後にコピー
  1. Azure 関数 (オプション):

    • 使用が断続的またはスケジュールされている場合に、サーバーレスのイベント駆動型ロジックを実行するのに最適です。
  2. Azure Kubernetes Service (AKS) (詳細):

    • 大規模な導入に最適です。
    • Docker を使用してアプリケーションをコンテナー化し、Azure Container Registry (ACR) にプッシュします。

  1. ベストプラクティス

  2. データ プライバシー: 特にモデルのトレーニング中に、機密データや専有データを責任を持って取り扱うようにします。

  3. 監視とログ: Azure Application Insights と統合して、パフォーマンスの監視、使用状況の追跡、異常の検出を行います。

  4. セキュリティ: Azure Key Vault を使用してキー (API キー、接続文字列) を保存します。

  5. モデルのバージョン管理: 必要に応じて、Azure ML でモデルのさまざまな微調整されたバージョンを追跡し、古いバージョンにロールバックします。

  6. ヒント エンジニアリング: 微調整されたモデルから最良の結果を得るためにヒントを調整します。


  1. 結論

PythonAzure Machine Learning を使用して LLM を微調整し、それらを .NET Core アプリケーションに統合して、強力なドメイン固有の AI を構築できるようにしますソリューション。この組み合わせは、Azure の拡張性をすべて活用した Python の AI エコシステムと .NET のエンタープライズ機能を活用したい組織にとって優れた選択肢です。

セキュリティ、データ ガバナンス、DevOps を慎重に計画することで、実世界のニーズを満たす本番環境に対応したソリューションを立ち上げ、強力で保守が容易なフレームワークで正確なドメイン固有の言語機能を提供できます。

以上が.NET Core、Python、Azure を使用した大規模言語モデル (LLM) の微調整の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート