目次
目次
はじめに
なぜ大規模な言語モデルを微調整するのでしょうか?
ソリューションの概要
コンポーネントとテクノロジー
環境設定
前提条件
Python を使用したトレーニングと微調整
5.1 仮想環境のセットアップ
5.2 依存関係をインストールする
5.3 Azure Machine Learning ワークスペースを作成する
5.4 微調整スクリプト (train.py)
5.5 Azure へのモデルの登録
微調整されたモデルを .NET Core に統合する
6.1 .NET Core Web API プロジェクトを作成する
6.2 依存関係を追加する
6.3 ModelConsumerService.cs
6.4 LLMController.cs
6.5 .NET Core アプリケーションの構成
Azure へのデプロイ
ベストプラクティス
結論
ホームページ バックエンド開発 Python チュートリアル .NET Core、Python、Azure を使用した大規模言語モデル (LLM) の微調整

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

Jan 14, 2025 am 07:11 AM

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? 中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? Apr 01, 2025 pm 11:15 PM

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? Apr 01, 2025 pm 10:51 PM

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

Investing.comの反クローラーメカニズムをバイパスするニュースデータを取得する方法は? Investing.comの反クローラーメカニズムをバイパスするニュースデータを取得する方法は? Apr 02, 2025 am 07:03 AM

Investing.comの反クラウリング戦略を理解する多くの人々は、Investing.com(https://cn.investing.com/news/latest-news)からのニュースデータをクロールしようとします。

See all articles