大規模言語モデル (LLM) は、人間のようなテキストを理解して生成する能力で広く注目を集めています。ただし、多くの組織は、汎用モデルでは完全には捕捉できない可能性のある、独自のドメイン固有のデータ セットと語彙を持っています。 微調整により、開発者はこれらの大規模なモデルを特定の環境や業界に適応させ、精度と関連性を向上させることができます。
この記事では、Python を使用して LLM を微調整し、その結果のモデルを .NET Core C# アプリケーションに統合してデプロイする方法について説明します。スケーラビリティと利便性を高めるために、すべてを Microsoft Azure 上で実行します。
ドメインの特異性: LLM は、業界固有の用語、製品名、専門用語を使用するように微調整できます。
パフォーマンスの向上: 微調整により、多くの場合、エラーが減少し、顧客サービス、調査、分析などのユースケースでの関連性が向上します。
コストの削減: モデルを最初から構築する代わりに、既存の強力な LLM をカスタマイズできます。
効率の向上: 事前トレーニングされた重みを利用し、最終レイヤーまたはパラメーターのみを調整することで、プロセスを高速化します。
微調整用の Python
統合用の .NET Core C#
Azure サービス
この例では、最も広く採用されている LLM 微調整ライブラリの 1 つである Hugging Face Transformers を使用します。
<code>python -m venv venv source venv/bin/activate # 在 Windows 上:venv\Scripts\activate</code>
<code>pip install torch transformers azureml-sdk</code>
<code> az group create --name LLMFinetuneRG --location eastus az ml workspace create --name LLMFinetuneWS --resource-group LLMFinetuneRG</code>
<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>
<code>from azureml.core.model import Model model = Model.register( workspace=ws, model_path="./fine_tuned_model", model_name="myFineTunedLLM" )</code>
この時点で、簡単にアクセスしてバージョンを管理できるように、微調整されたモデルは Azure Machine Learning に保存されます。
<code>dotnet new webapi -n FineTunedLLMApi cd FineTunedLLMApi</code>
<code>dotnet add package Microsoft.Extensions.Http dotnet add package Microsoft.Azure.Storage.Blob dotnet add package Newtonsoft.Json</code>
微調整されたモデルを 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>
<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>
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>
Azure App Service:
<code>python -m venv venv source venv/bin/activate # 在 Windows 上:venv\Scripts\activate</code>
Azure 関数 (オプション):
Azure Kubernetes Service (AKS) (詳細):
データ プライバシー: 特にモデルのトレーニング中に、機密データや専有データを責任を持って取り扱うようにします。
監視とログ: Azure Application Insights と統合して、パフォーマンスの監視、使用状況の追跡、異常の検出を行います。
セキュリティ: Azure Key Vault を使用してキー (API キー、接続文字列) を保存します。
モデルのバージョン管理: 必要に応じて、Azure ML でモデルのさまざまな微調整されたバージョンを追跡し、古いバージョンにロールバックします。
ヒント エンジニアリング: 微調整されたモデルから最良の結果を得るためにヒントを調整します。
Python と Azure Machine Learning を使用して LLM を微調整し、それらを .NET Core アプリケーションに統合して、強力なドメイン固有の AI を構築できるようにしますソリューション。この組み合わせは、Azure の拡張性をすべて活用した Python の AI エコシステムと .NET のエンタープライズ機能を活用したい組織にとって優れた選択肢です。
セキュリティ、データ ガバナンス、DevOps を慎重に計画することで、実世界のニーズを満たす本番環境に対応したソリューションを立ち上げ、強力で保守が容易なフレームワークで正確なドメイン固有の言語機能を提供できます。
以上が.NET Core、Python、Azure を使用した大規模言語モデル (LLM) の微調整の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。