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

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();
    }
}</string></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; }
}</iactionresult></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();</modelconsumerservice></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 までご連絡ください。
Pythonを使用した科学コンピューティングでアレイはどのように使用されていますか?Pythonを使用した科学コンピューティングでアレイはどのように使用されていますか?Apr 25, 2025 am 12:28 AM

Arraysinpython、特にvianumpy、arecrucialinscientificComputing fortheirefficienty andversitility.1)彼らは、fornumericaloperations、data analysis、andmachinelearning.2)numpy'simplementation incensuresfasteroperationsthanpasteroperations.3)arayableminablecickick

同じシステムで異なるPythonバージョンをどのように処理しますか?同じシステムで異なるPythonバージョンをどのように処理しますか?Apr 25, 2025 am 12:24 AM

Pyenv、Venv、およびAnacondaを使用して、さまざまなPythonバージョンを管理できます。 1)Pyenvを使用して、複数のPythonバージョンを管理します。Pyenvをインストールし、グローバルバージョンとローカルバージョンを設定します。 2)VENVを使用して仮想環境を作成して、プロジェクトの依存関係を分離します。 3)Anacondaを使用して、データサイエンスプロジェクトでPythonバージョンを管理します。 4)システムレベルのタスク用にシステムPythonを保持します。これらのツールと戦略を通じて、Pythonのさまざまなバージョンを効果的に管理して、プロジェクトのスムーズな実行を確保できます。

標準のPythonアレイでnumpyアレイを使用することの利点は何ですか?標準のPythonアレイでnumpyアレイを使用することの利点は何ですか?Apr 25, 2025 am 12:21 AM

numpyarrayshaveveraladvantages-averstandardpythonarrays:1)thealmuchfasterduetocベースのインプレンテーション、2)アレモレメモリ効率、特にlargedatasets、および3)それらは、拡散化された、構造化された形成術科療法、

アレイの均質な性質はパフォーマンスにどのように影響しますか?アレイの均質な性質はパフォーマンスにどのように影響しますか?Apr 25, 2025 am 12:13 AM

パフォーマンスに対する配列の均一性の影響は二重です。1)均一性により、コンパイラはメモリアクセスを最適化し、パフォーマンスを改善できます。 2)しかし、タイプの多様性を制限し、それが非効率につながる可能性があります。要するに、適切なデータ構造を選択することが重要です。

実行可能なPythonスクリプトを作成するためのベストプラクティスは何ですか?実行可能なPythonスクリプトを作成するためのベストプラクティスは何ですか?Apr 25, 2025 am 12:11 AM

craftexecutablepythonscripts、次のようになります

numpyアレイは、アレイモジュールを使用して作成された配列とどのように異なりますか?numpyアレイは、アレイモジュールを使用して作成された配列とどのように異なりますか?Apr 24, 2025 pm 03:53 PM

numpyarraysarasarebetterfornumeroperations andmulti-dimensionaldata、whilethearraymoduleissuitable forbasic、1)numpyexcelsinperformance and forlargedatasentassandcomplexoperations.2)thearraymuremememory-effictientivearientfa

Numpyアレイの使用は、Pythonで配列モジュール配列の使用と比較してどのように比較されますか?Numpyアレイの使用は、Pythonで配列モジュール配列の使用と比較してどのように比較されますか?Apr 24, 2025 pm 03:49 PM

NumPyArraySareBetterforHeavyNumericalComputing、whilethearrayarayismoreSuitableformemory-constrainedprojectswithsimpledatatypes.1)numpyarraysofferarays andatiledance andpeperancedatasandatassandcomplexoperations.2)thearraymoduleisuleiseightweightandmemememe-ef

CTypesモジュールは、Pythonの配列にどのように関連していますか?CTypesモジュールは、Pythonの配列にどのように関連していますか?Apr 24, 2025 pm 03:45 PM

ctypesallowsinging andmanipulatingc-stylearraysinpython.1)usectypestointerfacewithclibrariesforperformance.2)createc-stylearraysfornumericalcomputations.3)passarraystocfunctions foreffientientoperations.how、how、becuutiousmorymanagemation、performanceo

See all articles

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版

SublimeText3 Mac版

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

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール