Rumah > pembangunan bahagian belakang > Tutorial Python > Penalaan Halus Model Bahasa Besar (LLM) dengan Teras .NET, Python dan Azure

Penalaan Halus Model Bahasa Besar (LLM) dengan Teras .NET, Python dan Azure

Susan Sarandon
Lepaskan: 2025-01-14 07:11:42
asal
962 orang telah melayarinya

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

Jadual Kandungan

  1. Pengenalan
  2. Mengapa memperhalusi model bahasa besar?
  3. Ikhtisar Penyelesaian
  4. Tetapan Persekitaran
  5. Latihan dan penalaan halus menggunakan Python
  6. Sepadukan model yang diperhalusi dalam Teras .NET
  7. Kerahkan ke Azure
  8. Amalan Terbaik
  9. Kesimpulan

  1. Pengenalan

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.


  1. Mengapa memperhalusi model bahasa besar?

  2. Kekhususan Domain: LLM boleh diperhalusi untuk menggunakan istilah, nama produk atau jargon khusus industri.

  3. Peningkatan prestasi: Penalaan halus selalunya mengurangkan ralat dan meningkatkan perkaitan dalam kes penggunaan seperti perkhidmatan pelanggan, penyelidikan dan analitis.

  4. Kurangkan kos: Daripada membina model dari awal, anda boleh menyesuaikan LLM berkuasa sedia ada.

  5. Meningkatkan kecekapan: Anda memanfaatkan pemberat yang telah dilatih dan hanya melaraskan lapisan atau parameter akhir, sekali gus mempercepatkan proses.


  1. Gambaran Keseluruhan Penyelesaian

Komponen dan Teknologi

  1. Python untuk penalaan halus

    • Perpustakaan yang biasa digunakan (cth. Memeluk Face Transformers, PyTorch)
    • Mempermudahkan proses memuatkan dan menala model pra-latihan
  2. .NET Core C# untuk penyepaduan

    • Dedahkan perkhidmatan hujung belakang atau API untuk memperhalusi model
    • Bahasa yang ditaip dengan kuat, biasa kepada banyak pembangun perusahaan
  3. Perkhidmatan Azure

    • Pembelajaran Mesin Azure untuk latihan dan pengurusan model
    • Storan Azure untuk data dan artifak model
    • Perkhidmatan Aplikasi Azure atau Fungsi Azure untuk mengehos aplikasi Teras .NET
    • Azure Key Vault (pilihan) untuk melindungi kelayakan

  1. Tetapan persekitaran

Prasyarat

  • Langganan Azure: Diperlukan untuk mencipta sumber seperti Ruang Kerja Pembelajaran Mesin dan Perkhidmatan Apl.
  • Python 3.8 : Dipasang secara setempat untuk penalaan halus model.
  • .NET 6/7/8 SDK: Untuk mencipta dan menjalankan aplikasi .NET Core C#.
  • Visual Studio 2022 atau Visual Studio Code: IDE Disyorkan.
  • Azure CLI: Digunakan untuk mengkonfigurasi dan mengurus perkhidmatan Azure melalui terminal.
  • Docker (pilihan): Boleh digunakan untuk menyimpan aplikasi anda jika perlu.

  1. Latihan dan penalaan halus menggunakan Python

Contoh ini menggunakan Hugging Face Transformers - salah satu perpustakaan penalaan halus LLM yang diterima pakai secara meluas.

5.1 Sediakan persekitaran maya

<code>python -m venv venv
source venv/bin/activate  # 在 Windows 上:venv\Scripts\activate</code>
Salin selepas log masuk
Salin selepas log masuk

5.2 Pasang kebergantungan

<code>pip install torch transformers azureml-sdk</code>
Salin selepas log masuk

5.3 Cipta ruang kerja Pembelajaran Mesin Azure

  1. Kumpulan Sumber dan Ruang Kerja:
<code>   az group create --name LLMFinetuneRG --location eastus
   az ml workspace create --name LLMFinetuneWS --resource-group LLMFinetuneRG</code>
Salin selepas log masuk
  1. Konfigurasikan persekitaran setempat untuk menyambung ke ruang kerja (menggunakan fail config.json atau pembolehubah persekitaran).

5.4 Skrip penalaan halus (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>
Salin selepas log masuk

5.5 Daftar model dalam Azure

<code>from azureml.core.model import Model

model = Model.register(
    workspace=ws,
    model_path="./fine_tuned_model",
    model_name="myFineTunedLLM"
)</code>
Salin selepas log masuk

Pada ketika ini, model anda yang diperhalusi disimpan dalam Pembelajaran Mesin Azure untuk akses mudah dan kawalan versi.


  1. Sepadukan model yang diperhalusi dalam Teras .NET

6.1 Cipta projek .NET Core Web API

<code>dotnet new webapi -n FineTunedLLMApi
cd FineTunedLLMApi</code>
Salin selepas log masuk

6.2 Tambah kebergantungan

  • HttpClient untuk memanggil titik akhir Azure atau API inferens setempat
  • Newtonsoft.Json (jika anda lebih suka menggunakan JSON.NET untuk bersiri)
  • Azure.Storage.Blobs atau Azure.Identity untuk akses selamat kepada sumber Azure
<code>dotnet add package Microsoft.Extensions.Http
dotnet add package Microsoft.Azure.Storage.Blob
dotnet add package Newtonsoft.Json</code>
Salin selepas log masuk

6.3 ModelConsumerService.cs

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>
Salin selepas log masuk

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>
Salin selepas log masuk

6.5 Mengkonfigurasi Aplikasi Teras .NET

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>
Salin selepas log masuk

  1. Gunakan ke Azure

  2. Perkhidmatan Apl Azure:

    • Bagi kebanyakan aplikasi Teras .NET, ini adalah laluan paling mudah.
    • Buat Apl Web baharu daripada portal Azure atau melalui CLI.
<code>python -m venv venv
source venv/bin/activate  # 在 Windows 上:venv\Scripts\activate</code>
Salin selepas log masuk
Salin selepas log masuk
  1. Fungsi Azure (pilihan):

    • Sesuai untuk menjalankan logik tanpa pelayan, dipacu peristiwa jika penggunaan anda terputus-putus atau dijadualkan.
  2. Perkhidmatan Azure Kubernetes (AKS) (Lanjutan):

    • Sesuai untuk penggunaan berskala besar.
    • Simpan aplikasi anda menggunakan Docker dan tolak ke Azure Container Registry (ACR).

  1. Amalan Terbaik

  2. Privasi Data: Pastikan pengendalian data sensitif atau proprietari yang bertanggungjawab, terutamanya semasa latihan model.

  3. Pemantauan dan Pengelogan: Sepadukan dengan Azure Application Insights untuk memantau prestasi, menjejaki penggunaan dan mengesan anomali.

  4. Keselamatan: Gunakan Azure Key Vault untuk menyimpan kunci (kunci API, rentetan sambungan).

  5. Versi Model: Jejaki versi diperhalusi model anda yang berbeza dalam Azure ML rollback ke versi lama jika perlu.

  6. Kejuruteraan Petunjuk: Perhalusi pembayang anda untuk mendapatkan hasil terbaik daripada model anda yang diperhalusi.


  1. Kesimpulan

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan