Udostępnij za pośrednictwem


LoRA Fine-Tuning dla krzemionki Phi

Adaptacja niskiej rangi (LoRA) może być wykorzystana do dostosowania modelu Phi Silica w celu zwiększenia jego wydajności dla konkretnego przypadku użycia. Korzystając z LoRA do optymalizacji Phi Silica, lokalnego modelu językowego systemu Microsoft Windows, można uzyskać dokładniejsze wyniki. Ten proces obejmuje trenowanie adaptera LoRA, a następnie stosowanie go podczas wnioskowania w celu zwiększenia dokładności modelu.

Wymagania wstępne

  • Zidentyfikowałeś przypadek użycia do zwiększenia odpowiedzi Phi Silica.
  • Wybrano kryteria oceny, aby zdecydować, jaka jest "dobra odpowiedź".
  • Przetestowałeś interfejsy API Phi Silica i nie spełniają one twoich kryteriów oceny.

Przeszkol swój adapter

Aby wytrenować adapter LoRA na potrzeby precyzyjnego dostrajania modelu Silica Phi w systemie Windows 11, należy najpierw wygenerować zestaw danych, który będzie używany przez proces trenowania.

Generowanie zestawu danych do użycia z adapterem LoRA

Aby wygenerować zestaw danych, należy podzielić dane na dwa pliki:

  • train.json — jest używany do trenowania adaptera.

  • test.json — służy do oceny wydajności adaptera podczas i po treningu.

Oba pliki muszą używać formatu JSON, gdzie każdy wiersz jest oddzielnym obiektem JSON reprezentującym pojedynczy przykład. Każdy przykład powinien zawierać listę komunikatów wymienianych między użytkownikiem a asystentem.

Każdy obiekt komunikatu wymaga dwóch pól:

  • content: tekst wiadomości.

  • role "user": lub "assistant", wskazując nadawcę.

Zobacz następujące przykłady:

{"messages": [{"content": "Hello, how do I reset my password?", "role": "user"}, {"content": "To reset your password, go to the settings page and click 'Reset Password'.", "role": "assistant"}]} 

{"messages": [{"content": "Can you help me find nearby restaurants?", "role": "user"}, {"content": "Sure! Here are some restaurants near your location: ...", "role": "assistant"}]}  

{"messages": [{"content": "What is the weather like today?", "role": "user"}, {"content": "Today's forecast is sunny with a high of 25°C.", "role": "assistant"}]}  

Porady dotyczące trenowania:

  • Na końcu każdego wiersza próbki nie jest potrzebny przecinek.

  • Uwzględnij jak najwięcej wysokiej jakości i różnorodnych przykładów. Aby uzyskać najlepsze wyniki, zbierz co najmniej kilka tysięcy przykładów treningowych w train.json pliku.

  • Plik test.json może być mniejszy, ale powinien obejmować typy interakcji, które powinny być obsługiwane przez model.

  • Utwórz pliki train.json i test.json, z jednym obiektem JSON na wiersz, każdy zawierający krótką rozmowę pomiędzy użytkownikiem a asystentem. Jakość i ilość danych znacznie wpływają na skuteczność adaptera LoRA.

Trenowanie adaptera LoRA w AI Toolkit

Aby wytrenować adapter LoRA przy użyciu zestawu narzędzi AI Toolkit for Visual Studio Code, musisz najpierw spełnić wymagania wstępne:

Aby zainstalować zestaw narzędzi AI Toolkit for Visual Studio Code:

  1. Pobieranie rozszerzenia AI Toolkit w programie Visual Studio Code

  2. Po pobraniu rozszerzenia AI Toolkit będzie można uzyskać do niego dostęp z okienka po lewej stronie paska narzędzi w programie Visual Studio Code.

  3. Przejdź do Narzędzia>Dostrajanie.

  4. Wprowadź nazwę projektu i lokalizację projektu.

  5. Wybierz pozycję "microsoft/phi-silica" z katalogu modeli.

  6. Wybierz pozycję "Konfiguruj projekt".

    Zrzut ekranu przedstawiający rozszerzenie AI Toolkit w programie Visual Studio Code.

  7. Wybierz najnowszą wersję Phi Silica.

  8. Wybierz swoje pliki w obszarze danych>, nazwa zestawu danych trenowania i nazwa testowego zestawu danychtrain.json i test.json.

  9. Wybierz pozycję "Generuj projekt" — zostanie otwarte nowe okna programu VS Code.

  10. Upewnij się, że w pliku bicep wybrano prawidłowy profil obciążenia, aby zadanie platformy Azure zostało wdrożone i uruchomione poprawnie. Dodaj następujące elementy w obszarze workloadProfiles:

    { 
         workloadProfileType: 'Consumption-GPU-NC24-A100' 
         name: 'GPU'
    } 
    
  11. Wybierz pozycję "Nowe zadanie dostrajania" i wprowadź nazwę zadania.

  12. Zostanie wyświetlone okno dialogowe z prośbą o wybranie konta Microsoft, za pomocą którego będzie można uzyskać dostęp do subskrypcji platformy Azure.

  13. Po wybraniu konta musisz wybrać grupę zasobów z menu rozwijanego subskrypcji.

  14. Teraz zobaczysz, że zadanie dostrajania zostało pomyślnie uruchomione wraz z informacją o stanie zadania. Po zakończeniu zadania będziesz mieć możliwość pobrania świeżo wyuczonego adaptera LoRA, klikając przycisk "Pobierz". Ukończenie zadania dostrajania zwykle trwa średnio 45– 60 minut.

Wnioskowanie

Trenowanie to faza początkowa, w której model sztucznej inteligencji uczy się na podstawie dużego zestawu danych, rozpoznawania wzorców i korelacji. Wnioskowanie to faza aplikacji, w której wytrenowany model (Silica Phi w naszym przypadku) używa nowych danych (nasz adapter LoRA) do dokonywania przewidywań lub podejmowania decyzji, aby wygenerować bardziej dostosowane dane wyjściowe.

Aby zastosować wyszkolony adapter LoRA:

  1. Użyj aplikacji Galeria deweloperów sztucznej inteligencji. Galeria deweloperów sztucznej inteligencji to aplikacja, która umożliwia eksperymentowanie z lokalnymi modelami i interfejsem API sztucznej inteligencji, oprócz wyświetlania i eksportowania przykładowego kodu. Dowiedz się więcej o galerii deweloperów sztucznej inteligencji.

  2. Po zainstalowaniu galerii deweloperów sztucznej inteligencji otwórz aplikację i wybierz kartę "Interfejsy API sztucznej inteligencji", a następnie wybierz pozycję "Phi Silica LoRA".

    Zrzut ekranu galerii deweloperów sztucznej inteligencji przedstawiający interfejsy API sztucznej inteligencji systemu Windows, w tym Silica LoRA Phi.

  3. Wybierz plik adaptera. Domyślną lokalizacją tych, które mają być przechowywane, jest: Desktop / lora_lab / trainedLora.

  4. Wypełnij pola "Monit systemowy" i "Monit". Następnie wybierz opcję "Generuj", aby zobaczyć różnicę między Phi Silica z oraz bez adaptera LoRA.

  5. Poeksperymentuj z monitem i monitem systemowym, aby zobaczyć, jak to robi różnicę w danych wyjściowych.

  6. Wybierz pozycję "Eksportuj przykład", aby pobrać autonomiczne rozwiązanie programu Visual Studio, które zawiera tylko ten przykładowy kod.

Generowanie odpowiedzi

Po przetestowaniu nowej karty LoRA przy użyciu galerii deweloperów AI możesz dodać adapter do aplikacji systemu Windows przy użyciu poniższego przykładu kodu.

using Microsoft.Windows.AI.Text; 
using Microsoft.Windows.AI.Text.Experimental; 

// Path to the LoRA adapter file 
string adapterFilePath = "C:/path/to/adapter/file.safetensors"; 

// Prompt to be sent to the LanguageModel 
string prompt = "How do I add a new project to my Visual Studio solution?"; 

// Wait for LanguageModel to be ready 
if (LanguageModel.GetReadyState() == AIFeatureReadyState.NotReady) 

{ 
var languageModelDeploymentOperation = LanguageModel.EnsureReadyAsync();
     await languageModelDeploymentOperation; 
}   

// Create the LanguageModel session 
var session = LanguageModel.CreateAsync(); 

// Create the LanguageModelExperimental 
var languageModelExperimental = new LanguageModelExperimental(session); 

// Load the LoRA adapter 
LowRankAdaptation loraAdapter = languageModelExperimental.LoadAdapter(adapterFilePath); 

// Set the adapter in LanguageModelOptionsExperimental 
LanguageModelOptionsExperimental options = new LanguageModelOptionsExperimental 

{ 
LoraAdapter = loraAdapter 
}; 

// Generate a response with the LoRA adapter provided in the options 
var response = await languageModelExperimental.GenerateResponseAsync(prompt, options);

Odpowiedzialne używanie sztucznej inteligencji — czynniki ryzyka i ograniczenia dostosowywania

Gdy klienci dostosowują krzemionkę Phi, mogą poprawić wydajność i dokładność modelu w określonych zadaniach i obszarach, ale może to również wprowadzać nowe zagrożenia i ograniczenia, o których powinni być świadomi. Niektóre z tych czynników ryzyka i ograniczeń to:

  • Jakość i reprezentacja danych: jakość i reprezentatywność danych używanych do dostrajania mogą mieć wpływ na zachowanie i dane wyjściowe modelu. Jeśli dane są hałaśliwe, niekompletne, nieaktualne lub zawierają szkodliwe treści, takie jak stereotypy, model może dziedziczyć te problemy i generować niedokładne lub szkodliwe wyniki. Jeśli na przykład dane zawierają stereotypy dotyczące płci, model może je wzmocnić i wygenerować seksistowski język. Klienci powinni starannie wybierać i wstępnie przetwarzać swoje dane, aby upewnić się, że są one istotne, zróżnicowane i zrównoważone dla zamierzonego zadania i domeny.

  • Niezawodność i uogólnianie modelu: zdolność modelu do obsługi różnorodnych i złożonych danych wejściowych i scenariuszy może zmniejszyć się po dostrajaniu, zwłaszcza jeśli dane są zbyt wąskie lub specyficzne. Model może nadmiernie dopasować się do danych i utracić pewną ogólną wiedzę i możliwości. Jeśli na przykład dane dotyczą tylko sportu, model może mieć trudności z odpowiadaniem na pytania lub generowaniem tekstu na temat innych tematów. Klienci powinni ocenić wydajność i niezawodność modelu na różnych danych wejściowych i scenariuszach oraz unikać używania modelu dla zadań lub domen, które znajdują się poza jego zakresem.

  • Regurgitacja: Chociaż dane szkoleniowe nie są dostępne dla klientów Microsoft ani żadnych stron trzecich, źle dostosowane modele mogą replikować lub bezpośrednio powtarzać dane szkoleniowe. Klienci są odpowiedzialni za usunięcie wszelkich danych osobowych lub inaczej chronionych informacji z danych szkoleniowych i powinni ocenić swoje dopasowane modele pod kątem nadmiernego dopasowania lub niskiej jakości odpowiedzi. Aby uniknąć ponownego konfigurowania, klienci są zachęcani do udostępniania dużych i zróżnicowanych zestawów danych.

  • Przejrzystość i wyjaśnienie modelu: logika i rozumowanie modelu mogą stać się bardziej nieprzezroczyste i trudne do zrozumienia po dostrajaniu, zwłaszcza jeśli dane są złożone lub abstrakcyjne. Dostosowany model może generować dane wyjściowe, które są nieoczekiwane, niespójne lub sprzeczne, a klienci mogą nie być w stanie wyjaśnić, jak lub dlaczego model dotarł do tych danych wyjściowych. Jeśli na przykład dane dotyczą warunków prawnych lub medycznych, model może wygenerować dane wyjściowe, które są niedokładne lub mylące, a klienci mogą nie być w stanie ich zweryfikować lub uzasadnić. Klienci powinni monitorować i przeprowadzać inspekcję danych wyjściowych i zachowania modelu oraz dostarczać jasne i dokładne informacje oraz wskazówki dla użytkowników końcowych modelu.

Zobacz także