Rumah >pembangunan bahagian belakang >Tutorial Python >Penalaan Halus Model Bahasa Besar (LLM) dengan Teras .NET, Python dan Azure
Model bahasa berskala besar (LLM) telah mendapat perhatian meluas kerana keupayaannya memahami dan menjana teks seperti manusia. Walau bagaimanapun, banyak organisasi mempunyai set data dan perbendaharaan kata yang unik dan khusus domain yang mungkin tidak dapat ditangkap sepenuhnya oleh model generik. Penalaan halus membolehkan pembangun menyesuaikan model besar ini kepada persekitaran atau industri tertentu, meningkatkan ketepatan dan perkaitan.
Artikel ini meneroka cara memperhalusi LLM menggunakan Python, kemudian menyepadukan dan menggunakan model yang terhasil ke dalam aplikasi .NET Core C#, semuanya dilakukan pada Microsoft Azure untuk kebolehskalaan dan Kemudahan.
Kekhususan Domain: LLM boleh diperhalusi untuk menggunakan istilah, nama produk atau jargon khusus industri.
Peningkatan prestasi: Penalaan halus selalunya mengurangkan ralat dan meningkatkan perkaitan dalam kes penggunaan seperti perkhidmatan pelanggan, penyelidikan dan analitis.
Kurangkan kos: Daripada membina model dari awal, anda boleh menyesuaikan LLM berkuasa sedia ada.
Meningkatkan kecekapan: Anda memanfaatkan pemberat yang telah dilatih dan hanya melaraskan lapisan atau parameter akhir, sekali gus mempercepatkan proses.
Python untuk penalaan halus
.NET Core C# untuk penyepaduan
Perkhidmatan Azure
Contoh ini menggunakan Hugging Face Transformers - salah satu perpustakaan penalaan halus LLM yang diterima pakai secara meluas.
<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>
Pada ketika ini, model anda yang diperhalusi disimpan dalam Pembelajaran Mesin Azure untuk akses mudah dan kawalan versi.
<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>
Andaikan anda telah menggunakan model anda yang diperhalusi sebagai perkhidmatan web (contohnya, menggunakan Instance Kontena Azure atau titik akhir tersuai dalam Azure ML). Coretan kod berikut memanggil perkhidmatan untuk mendapatkan hasil penyiapan.
<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>
Dalam Program.cs atau 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>
Perkhidmatan Apl Azure:
<code>python -m venv venv source venv/bin/activate # 在 Windows 上:venv\Scripts\activate</code>
Fungsi Azure (pilihan):
Perkhidmatan Azure Kubernetes (AKS) (Lanjutan):
Privasi Data: Pastikan pengendalian data sensitif atau proprietari yang bertanggungjawab, terutamanya semasa latihan model.
Pemantauan dan Pengelogan: Sepadukan dengan Azure Application Insights untuk memantau prestasi, menjejaki penggunaan dan mengesan anomali.
Keselamatan: Gunakan Azure Key Vault untuk menyimpan kunci (kunci API, rentetan sambungan).
Versi Model: Jejaki versi diperhalusi model anda yang berbeza dalam Azure ML rollback ke versi lama jika perlu.
Kejuruteraan Petunjuk: Perhalusi pembayang anda untuk mendapatkan hasil terbaik daripada model anda yang diperhalusi.
Perhalus LLM menggunakan Python dan Pembelajaran Mesin Azure dan kemudian integrasikannya ke dalam aplikasi .NET Core, membolehkan anda membina AI khusus domain yang berkuasa penyelesaian. Gabungan ini ialah pilihan terbaik untuk organisasi yang ingin memanfaatkan ekosistem AI Python dan keupayaan perusahaan .NET, semuanya dikuasakan oleh kebolehlanjutan Azure.
Dengan perancangan teliti untuk keselamatan, tadbir urus data dan DevOps, anda boleh melancarkan penyelesaian sedia pengeluaran yang memenuhi keperluan dunia sebenar, menyampaikan fungsi bahasa khusus domain yang tepat dalam rangka kerja yang berkuasa dan mudah diselenggara.
Atas ialah kandungan terperinci Penalaan Halus Model Bahasa Besar (LLM) dengan Teras .NET, Python dan Azure. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!