


Penalaan Halus Model Bahasa Besar (LLM) dengan Teras .NET, Python dan Azure
Jan 14, 2025 am 07:11 AMJadual Kandungan
- Pengenalan
- Mengapa memperhalusi model bahasa besar?
- Ikhtisar Penyelesaian
- Tetapan Persekitaran
- Latihan dan penalaan halus menggunakan Python
- Sepadukan model yang diperhalusi dalam Teras .NET
- Kerahkan ke Azure
- Amalan Terbaik
- Kesimpulan
-
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.
-
Mengapa memperhalusi model bahasa besar?
-
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.
-
Gambaran Keseluruhan Penyelesaian
Komponen dan Teknologi
-
Python untuk penalaan halus
- Perpustakaan yang biasa digunakan (cth. Memeluk Face Transformers, PyTorch)
- Mempermudahkan proses memuatkan dan menala model pra-latihan
-
.NET Core C# untuk penyepaduan
- Dedahkan perkhidmatan hujung belakang atau API untuk memperhalusi model
- Bahasa yang ditaip dengan kuat, biasa kepada banyak pembangun perusahaan
-
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
-
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.
-
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>
5.2 Pasang kebergantungan
<code>pip install torch transformers azureml-sdk</code>
5.3 Cipta ruang kerja Pembelajaran Mesin Azure
- Kumpulan Sumber dan Ruang Kerja:
<code> az group create --name LLMFinetuneRG --location eastus az ml workspace create --name LLMFinetuneWS --resource-group LLMFinetuneRG</code>
- 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) # 加載自定義數(shù)據(jù)集(本地或來(lái)自 Azure 存儲(chǔ)) # 示例:Azure ML 中的文本文件或數(shù)據(jù)集 train_texts = ["此處輸入您的特定領(lǐng)域文本..."] # 簡(jiǎn)化版 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() # 保存微調(diào)后的模型 trainer.save_model("./fine_tuned_model") tokenizer.save_pretrained("./fine_tuned_model")</code>
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>
Pada ketika ini, model anda yang diperhalusi disimpan dalam Pembelajaran Mesin Azure untuk akses mudah dan kawalan versi.
-
Sepadukan model yang diperhalusi dalam Teras .NET
6.1 Cipta projek .NET Core Web API
<code>dotnet new webapi -n FineTunedLLMApi cd FineTunedLLMApi</code>
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>
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>
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 Mengkonfigurasi Aplikasi Teras .NET
Dalam Program.cs atau Startup.cs:
<code>var builder = WebApplication.CreateBuilder(args); // 注冊(cè) HttpClient builder.Services.AddHttpClient("FineTunedModel", client => { client.BaseAddress = new Uri("https://your-model-endpoint/"); }); // 注冊(cè) ModelConsumerService builder.Services.AddTransient<ModelConsumerService>(); builder.Services.AddControllers(); var app = builder.Build(); app.MapControllers(); app.Run();</code>
-
Gunakan ke Azure
-
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>
-
Fungsi Azure (pilihan):
- Sesuai untuk menjalankan logik tanpa pelayan, dipacu peristiwa jika penggunaan anda terputus-putus atau dijadualkan.
-
Perkhidmatan Azure Kubernetes (AKS) (Lanjutan):
- Sesuai untuk penggunaan berskala besar.
- Simpan aplikasi anda menggunakan Docker dan tolak ke Azure Container Registry (ACR).
-
Amalan Terbaik
-
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.
-
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!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Kunci untuk menangani pengesahan API adalah untuk memahami dan menggunakan kaedah pengesahan dengan betul. 1. Apikey adalah kaedah pengesahan yang paling mudah, biasanya diletakkan dalam tajuk permintaan atau parameter URL; 2. BasicAuth menggunakan nama pengguna dan kata laluan untuk penghantaran pengekodan Base64, yang sesuai untuk sistem dalaman; 3. OAuth2 perlu mendapatkan token terlebih dahulu melalui client_id dan client_secret, dan kemudian bawa bearertoken dalam header permintaan; 4. Untuk menangani tamat tempoh token, kelas pengurusan token boleh dikemas dan secara automatik menyegarkan token; Singkatnya, memilih kaedah yang sesuai mengikut dokumen dan menyimpan maklumat utama adalah kunci.

Menegaskan adalah alat pernyataan yang digunakan dalam Python untuk menyahpepijat, dan melemparkan pernyataan apabila keadaan tidak dipenuhi. Sintaksnya adalah menegaskan keadaan ditambah maklumat ralat pilihan, yang sesuai untuk pengesahan logik dalaman seperti pemeriksaan parameter, pengesahan status, dan lain -lain, tetapi tidak boleh digunakan untuk pemeriksaan input keselamatan atau pengguna, dan harus digunakan bersamaan dengan maklumat yang jelas. Ia hanya tersedia untuk debugging tambahan dalam peringkat pembangunan dan bukannya menggantikan pengendalian pengecualian.

TypehintsinpythonsolvetheproblemofambiguityandpotentialbugsindynamiciallytypodeByallowingDeveloperStospecifyExpectedTypes.theyenhancereadability, enablearlybugdetection, andimprovetoLiaSareAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeSareadDeSareadDeSareadDeSareadDeSaread

Kaedah yang sama untuk melintasi dua senarai secara serentak dalam Python adalah menggunakan fungsi zip (), yang akan memasangkan beberapa senarai dalam rangka dan menjadi yang paling singkat; Jika panjang senarai tidak konsisten, anda boleh menggunakan itertools.zip_longest () untuk menjadi yang paling lama dan mengisi nilai yang hilang; Digabungkan dengan penghitungan (), anda boleh mendapatkan indeks pada masa yang sama. 1.Zip () adalah ringkas dan praktikal, sesuai untuk lelaran data berpasangan; 2.zip_longest () boleh mengisi nilai lalai apabila berurusan dengan panjang yang tidak konsisten; 3.enumerate (zip ()) boleh mendapatkan indeks semasa traversal, memenuhi keperluan pelbagai senario kompleks.

Inpython, iteratorsareObjectsThatallowLoopingthroughCollectionsByImplementing__iter __ () dan__Next __ ()

Untuk mewujudkan API moden dan cekap menggunakan Python, FastAPI disyorkan; Ia berdasarkan kepada jenis python standard yang diminta dan secara automatik dapat menghasilkan dokumen, dengan prestasi yang sangat baik. Selepas memasang FastAPI dan Asgi Server UVicorn, anda boleh menulis kod antara muka. Dengan menentukan laluan, menulis fungsi pemprosesan, dan data yang kembali, API boleh dibina dengan cepat. FastAPI menyokong pelbagai kaedah HTTP dan menyediakan sistem dokumentasi Swaggersui dan Redoc yang dihasilkan secara automatik. Parameter URL boleh ditangkap melalui definisi laluan, manakala parameter pertanyaan boleh dilaksanakan dengan menetapkan nilai lalai untuk parameter fungsi. Penggunaan rasional model Pydantic dapat membantu meningkatkan kecekapan dan ketepatan pembangunan.

Untuk menguji API, anda perlu menggunakan Perpustakaan Permintaan Python. Langkah -langkahnya adalah untuk memasang perpustakaan, menghantar permintaan, mengesahkan respons, menetapkan masa dan cuba semula. Pertama, pasang perpustakaan melalui PipinstallRequests; kemudian gunakan permintaan.get () atau requests.post () dan kaedah lain untuk menghantar permintaan GET atau pos; Kemudian semak respons.status_code dan response.json () untuk memastikan hasil pulangan mematuhi jangkaan; Akhirnya, tambah parameter tamat masa untuk menetapkan masa tamat, dan menggabungkan perpustakaan semula untuk mencapai percubaan automatik untuk meningkatkan kestabilan.

Dalam Python, pembolehubah yang ditakrifkan di dalam fungsi adalah pembolehubah tempatan dan hanya sah dalam fungsi; Ditakrifkan secara luaran adalah pembolehubah global yang boleh dibaca di mana sahaja. 1. Pembolehubah tempatan dimusnahkan kerana fungsi dilaksanakan; 2. Fungsi ini boleh mengakses pembolehubah global tetapi tidak dapat diubahsuai secara langsung, jadi kata kunci global diperlukan; 3. Jika anda ingin mengubah suai pembolehubah fungsi luar dalam fungsi bersarang, anda perlu menggunakan kata kunci nonlocal; 4. Pembolehubah dengan nama yang sama tidak mempengaruhi satu sama lain dalam skop yang berbeza; 5. Global mesti diisytiharkan apabila mengubah suai pembolehubah global, jika tidak, kesilapan unboundlocalerror akan dibangkitkan. Memahami peraturan ini membantu mengelakkan pepijat dan menulis lebih banyak fungsi yang boleh dipercayai.
