Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga / Notatka
Ten dokument odnosi się do portalu Microsoft Foundry (klasycznego).
🔍 Zapoznaj się z dokumentacją rozwiązania Microsoft Foundry (nową), aby dowiedzieć się więcej o nowym portalu.
Ważne
Elementy oznaczone jako (wersja zapoznawcza) w tym artykule są aktualnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą nie być obsługiwane lub mogą mieć ograniczone możliwości. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
Dowiedz się, jak wdrażać precyzyjne modele przy użyciu wdrożeń bezserwerowego interfejsu API w rozwiązaniu Microsoft Foundry. W tym kompleksowym przewodniku pokazano, jak dostosować duże modele językowe (LLM) do określonych zestawów danych i wdrożyć je przy użyciu infrastruktury bezserwerowej, oferując lepszą wydajność, efektywność kosztową, mniejsze opóźnienie i dostosowane dane wyjściowe.
Efektywność kosztowa: Dostrajanie Foundry może być bardziej ekonomiczne, zwłaszcza w przypadku wdrożeń na dużą skalę dzięki modelowi płatności zgodnie z rzeczywistym użyciem.
Odmiana modelu: bezserwerowe dostrajanie interfejsu API firmy Foundry oferuje obsługę zarówno zastrzeżonych, jak i open-source modeli, zapewniając użytkownikom elastyczność wybierania modeli, które najlepiej odpowiadają ich potrzebom bez ograniczenia do pojedynczego typu.
Dostosowywanie i kontrola: platforma Foundry zapewnia większe dostosowanie i kontrolę nad procesem dostosowywania, co pozwala użytkownikom na dokładniejsze dostosowywanie modeli do określonych wymagań.
W tym artykule wyjaśniono, jak dostosować modele wdrażane przy użyciu wdrożeń bezserwerowego interfejsu API w rozwiązaniu Foundry.
Wymagania wstępne
Subskrypcja platformy Azure z prawidłową formą płatności. Subskrypcje platformy Azure w wersji bezpłatnej lub próbnej nie działają. Jeśli nie masz subskrypcji platformy Azure, utwórz płatne konto platformy Azure.
Dostęp do witryny Azure Portal.
Kontrola dostępu oparta na rolach (RBAC) platformy Azure służy do udzielania dostępu do operacji w portalu Foundry. Aby wykonać kroki opisane w tym artykule, konto użytkownika musi mieć przypisaną rolę Właściciela lub Współpracownika dla subskrypcji platformy Azure. Aby uzyskać więcej informacji na temat uprawnień, zobacz Kontrola dostępu oparta na rolach w portalu Foundry.
Weryfikowanie rejestracji dostawcy subskrypcji
Sprawdź, czy twoja subskrypcja jest zarejestrowana u dostawcy zasobów Microsoft.Network .
- Zaloguj się do witryny Azure Portal.
- Wybierz subskrypcję, której chcesz użyć.
- W obszarze Ustawienia w menu paska bocznego wybierz pozycję Dostawcy zasobów.
- Wybierz pozycję Microsoft.Network i wybierz pozycję Zarejestruj , jeśli nie została zarejestrowana.
Znajdowanie modeli z obsługą dostrajania
Katalog modeli Foundry oferuje obsługę dostrajania wielu typów modeli, w tym uzupełniania czatów i generowania tekstu. Aby uzyskać listę modeli i regionów, które obsługują dostrajanie, zobacz dostępność regionów dla modeli w bezserwerowych interfejsach API.
Zadania dostrajania szczegółowego są dostępne tylko dla użytkowników, których subskrypcja platformy Azure należy do konta rozliczeniowego w regionie, w którym dostawca modelu udostępnia ofertę. Jeśli oferta jest dostępna w odpowiednim regionie, użytkownik musi mieć zasób projektu w regionie świadczenia usługi Azure, w którym model jest dostępny do wdrożenia lub dostrajania, zgodnie z obowiązującymi przepisami.
Możesz również przejść do portalu Foundry, aby wyświetlić wszystkie modele, które zawierają obsługę dostrajania:
-
Zaloguj się do usługi Microsoft Foundry. Upewnij się, że przełącznik New Foundry jest wyłączony. Te kroki odnoszą się do rozwiązania Foundry (wersja klasyczna).
Jeśli nie jesteś jeszcze w projekcie, wybierz go.
Przejdź do katalogu modeli.
Wybierz filtr Zadania dostrajania.
Wybierz pozycję Wszystkie lub wybierz określone zadanie.
Przygotowywanie danych do dostrajania
Przygotuj dane szkoleniowe i weryfikacyjne, aby dostroić model. Dane szkoleniowe i weryfikacyjne składają się z przykładów danych wejściowych i wyjściowych dotyczących sposobu, w jaki model ma działać.
Upewnij się, że wszystkie przykłady szkoleniowe są zgodne z oczekiwanym formatem wnioskowania. Aby efektywnie dostosowywać modele, zapewnij zróżnicowany zestaw danych, utrzymując równowagę danych, w tym różne scenariusze i okresowo uściśliając dane szkoleniowe w celu dopasowania ich do rzeczywistych oczekiwań. Te działania ostatecznie prowadzą do bardziej dokładnych i zrównoważonych odpowiedzi modelu.
Wskazówka
Różne typy modeli wymagają danych treningowych w różnych formatach.
Przykładowy format pliku
Obsługiwany typ pliku to JSON Lines (JSONL). Pliki są przesyłane do domyślnego magazynu danych i udostępniane w projekcie.
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}
Użyj kreatora dostrajania modelu
Portal Foundry udostępnia kreatora modelu niestandardowego, dzięki czemu można interaktywnie utworzyć i wytrenować dostosowany model dla zasobu platformy Azure.
Wybieranie modelu podstawowego
- Wybierz pozycję Dostrajanie z menu paska bocznego, a następnie wybierz pozycję + Dostrajanienie modelu.
- Wybierz model, który chcesz dostosować z listy w obszarze Modele podstawowe, a następnie wybierz pozycję Dalej.
Wybieranie danych treningowych
Następnym krokiem jest wybranie istniejących przygotowanych danych treningowych lub przekazanie nowych przygotowanych danych treningowych do użycia podczas dostosowywania modelu. W panelu Dane treningowe są wyświetlane wszystkie istniejące, wcześniej przekazane zestawy danych, a także opcje przekazywania nowych danych szkoleniowych.
Wybierz + Dodaj dane szkoleniowe.
- Jeśli dane szkoleniowe zostały już przekazane do usługi, wybierz pozycję Istniejące pliki w tym zasobie.
- Wybierz plik z wyświetlonej listy rozwijanej.
- Aby przekazać nowe dane szkoleniowe, użyj jednej z następujących opcji:
- Wybierz pozycję Przekaż pliki , aby przekazać dane szkoleniowe z pliku lokalnego.
- Wybierz pozycję Azure Blob lub inne udostępnione lokalizacje internetowe , aby zaimportować dane szkoleniowe z usługi Azure Blob lub innej udostępnionej lokalizacji internetowej.
- Aby użyć gotowego zestawu danych do szybkiego dostrajania, wybierz z listy w obszarze Wybierz dane.
W przypadku dużych plików danych zalecamy importowanie z magazynu obiektów blob platformy Azure. Aby uzyskać więcej informacji na temat usługi Azure Blob Storage, zobacz Co to jest usługa Azure Blob Storage?
Wybieranie danych walidacji
W następnym kroku przedstawiono opcje konfigurowania modelu w celu używania danych walidacji w procesie trenowania. Jeśli nie chcesz używać danych walidacji, możesz wybrać pozycję Prześlij , aby kontynuować zaawansowane opcje modelu. W przeciwnym razie, jeśli masz zestaw danych weryfikacji, możesz wybrać istniejące przygotowane dane weryfikacji lub przekazać nowe przygotowane dane weryfikacji do użycia podczas dostosowywania modelu.
Wybierz pozycję + Dodaj dane weryfikacji. W okienku Dane weryfikacji są wyświetlane wszystkie istniejące, wcześniej przekazane zestawy danych trenowania i walidacji oraz opcje, za pomocą których można przekazać nowe dane weryfikacji.
- Jeśli dane weryfikacji zostały już przekazane do usługi, wybierz pozycję Istniejące pliki w tym zasobie.
- Wybierz plik z listy pokazanej w okienku Dane weryfikacji.
- Aby przekazać nowe dane weryfikacji, użyj jednej z następujących opcji:
- Wybierz pozycję Przekaż pliki , aby przekazać dane weryfikacji z pliku lokalnego.
- Wybierz pozycję Azure Blob lub inne udostępnione lokalizacje internetowe , aby zaimportować dane walidacji z obiektu blob platformy Azure lub innej udostępnionej lokalizacji internetowej.
W przypadku dużych plików danych zalecamy importowanie z magazynu obiektów blob platformy Azure. Duże pliki mogą stać się niestabilne podczas przekazywania za pośrednictwem formularzy wieloczęściowych, ponieważ żądania są atomowe i nie można ich ponowić ani wznowić.
Uwaga / Notatka
- Podobnie jak pliki danych szkoleniowych, pliki danych weryfikacji muszą być sformatowane jako pliki JSONL, zakodowane w formacie UTF-8 ze znacznikiem kolejności bajtów (BOM). Rozmiar pliku musi być mniejszy niż 512 MB.
Konfigurowanie parametrów zadania
Kreator dopasowywania modelu pokazuje parametry treningowe modelu dopasowanego w panelu Parametry zadania. Dostępne są następujące parametry:
| nazwa | Typ | Opis |
|---|---|---|
| Rozmiar partii (1–32) | liczba całkowita | Rozmiar partii do użycia do treningu. Rozmiar partii to liczba przykładów trenowania używanych do trenowania pojedynczego przebiegu do przodu i do tyłu. Ogólnie rzecz biorąc, większe rozmiary partii zwykle działają lepiej w przypadku większych zestawów danych. Wartość domyślna i maksymalna wartość tej właściwości są specyficzne dla modelu podstawowego. Większy rozmiar partii oznacza, że parametry modelu są aktualizowane rzadziej, ale z mniejszą wariancją. |
| Mnożnik szybkości nauki (0.0-10.0) | Liczba | Mnożnik szybkości nauki używany do trenowania. Współczynnik dostrajania uczenia to oryginalny współczynnik uczenia używany do wstępnego trenowania pomnożonego przez tę wartość. Większe współczynniki uczenia się zwykle działają lepiej z większymi wielkościami partii. Zalecamy eksperymentowanie z wartościami z zakresu od 0,02 do 0,2, aby zobaczyć, co daje najlepsze wyniki. Mniejsze tempo nauki może być przydatne, aby uniknąć nadmiernego dopasowania. |
| Liczba epok (1–10) | liczba całkowita | Liczba epok do trenowania modelu. Epoka odnosi się do jednego pełnego przeglądu przez zbiór danych treningowych. |
Wybierz Opcję Domyślne, aby użyć domyślnych wartości dla zadania dostrajania lub wybierz Opcję Niestandardowy, aby wyświetlić i edytować wartości hiperparametrów. Po wybraniu wartości domyślnych określamy poprawną wartość algorytmicznie na podstawie danych treningowych.
Po skonfigurowaniu opcji zaawansowanych wybierz pozycję Prześlij.
Sprawdzanie stanu modelu niestandardowego
Zakładka dostrajania wyświetla informacje o modelu niestandardowym. Karta zawiera informacje o stanie i identyfikatorze procesu dostosowanego dla spersonalizowanego modelu. Po zakończeniu zadania na karcie zostanie wyświetlony identyfikator pliku wynikowego. Może być konieczne wybranie pozycji Odśwież , aby wyświetlić zaktualizowany stan zadania trenowania modelu.
Po uruchomieniu zadania dostrajania może upłynąć trochę czasu do jego zakończenia. Zadanie może być w kolejce za innymi zadaniami w systemie. Trenowanie modelu może potrwać kilka minut lub godzin w zależności od rozmiaru modelu i zestawu danych. Poniżej przedstawiono niektóre zadania, które można wykonać na karcie Modele :
- Sprawdź stan zadań dostrajania niestandardowych modeli w kolumnie Stan na karcie Dostosowane modele.
- W kolumnie nazwa modelu wybierz nazwę modelu, aby wyświetlić więcej informacji na temat modelu niestandardowego. Możesz zobaczyć stan zadania dostrajania, wyników trenowania, zdarzeń szkoleniowych i hiperparametrów używanych w zadaniu.
- Wybierz Odśwież, aby zaktualizować informacje na stronie.
Obsługiwane scenariusze biznesowe dla dopasowania
Dla wdrażania bezserwerowego interfejsu API obsługiwane są różne scenariusze dla przedsiębiorstw. W poniższej tabeli przedstawiono obsługiwane konfiguracje dla zarządzania siecią magazynowania użytkowników oraz uwierzytelniania, aby zapewnić bezproblemowe działanie w środowisku korporacyjnym.
Uwaga / Notatka
- Uwierzytelnianie połączeń danych można zmienić za pomocą narzędzia Foundry, wybierając połączenie magazynu danych, w którym jest przechowywany zestaw danych, i przechodząc do ustawieniaMetoda uwierzytelniania> dostępu.
- Uwierzytelnianie magazynu można zmienić na stronie >Konfiguracje> usługi Azure Storage >Zezwalaj na dostęp do klucza konta magazynu.
- Sieć magazynu można zmienić na stronie Sieci usługi Azure Storage.>
| Sieć magazynu | Uwierzytelnianie dla magazynu danych | Uwierzytelnianie połączenia danych | Pomoc |
|---|---|---|---|
| Dostęp do sieci publicznej = włączony | Włączony klucz konta | Sygnatura dostępu współdzielonego/klucz konta | Tak, doświadczenie użytkownika i zestaw SDK |
| Dostęp do sieci publicznej = włączony | Klucz konta jest wyłączony | Uwierzytelnianie oparte na Entra (bez użycia poświadczeń) | Tak, doświadczenie użytkownika i zestaw SDK Uwaga: dla doświadczenia użytkownika może być konieczne dodanie roli Storage Blob Data Reader lub Storage Blob Data Contributor dla twojego identyfikatora użytkownika na koncie magazynu lub zmianę metody uwierzytelniania połączenia, aby używać klucza konta lub tokenu SAS |
| Włączone z wybranych sieci wirtualnych i adresów IP | Włączony klucz konta | Klucz konta | Tak, doświadczenie użytkownika i zestaw SDK Uwaga: w przypadku środowiska użytkownika adres IP komputera z uruchomioną przeglądarką musi znajdować się na wybranej liście |
| Włączone z wybranych sieci wirtualnych i adresów IP | Włączony klucz konta | SAS | Tak, doświadczenie użytkownika i zestaw SDK Uwaga: w przypadku środowiska użytkownika adres IP komputera z uruchomioną przeglądarką musi znajdować się na wybranej liście |
| Włączone z wybranych sieci wirtualnych i adresów IP | Klucz konta jest wyłączony | Uwierzytelnianie oparte na Entra (bez użycia poświadczeń) | Tak, UX i SDK. Uwaga: dla UX może być konieczne dodanie czytelnika danych blob w magazynie lub współtwórcy danych blob w magazynie dla identyfikatora użytkownika na koncie magazynu, lub zmień uwierzytelnianie połączenia, aby używać klucza konta/tokenu SAS. Upewnij się również, że adres IP obliczeń, na którym jest uruchomiona przeglądarka, musi znajdować się na wybranej liście |
| Dostęp do sieci publicznej = wyłączony | Włączony klucz konta | Sygnatura dostępu współdzielonego/klucz konta | Tak, UX i SDK. Uwaga: aby przesyłanie i składanie danych UX działało, należy uzyskać dostęp do obszaru roboczego w sieci wirtualnej, który ma odpowiedni dostęp do magazynu |
| Dostęp do sieci publicznej = wyłączony | Klucz konta jest wyłączony | Uwierzytelnianie oparte na Entra (bez użycia poświadczeń) | Tak, UX i SDK. Uwaga: aby przesyłanie i składanie danych UX działało, należy uzyskać dostęp do obszaru roboczego w sieci wirtualnej, który ma odpowiedni dostęp do magazynu |
Powyższe scenariusze powinny również działać w zarządzanym obszarze roboczym sieci wirtualnej. Aby dowiedzieć się, jak skonfigurować zarządzaną sieć wirtualną Foundry Hub, zobacz Jak skonfigurować sieć zarządzaną dla koncentratorów Foundry.
Korzystanie z kluczy zarządzanych przez klienta (CMKs) nie jest obsługiwanym scenariuszem korporacyjnym z doprecyzowaniem wdrożenia bezserwerowego interfejsu API.
Problemy z dostrajaniem unikatowych konfiguracji sieci w przestrzeni roboczej i magazynowej zwykle wskazują na problem przy konfiguracji sieci.
Wdrażanie dostosowanego modelu
Po pomyślnym zakończeniu zadania dostrajania można wdrożyć model niestandardowy na karcie Dostrajanie. Konieczne jest wdrożenie modelu niestandardowego, aby był dostępny do użycia z wywołaniami uzupełniania.
Ważne
Po wdrożeniu dostosowanego modelu i zakończeniu pracy z punktem końcowym pamiętaj, aby wyczyścić wszystkie nieaktywne punkty końcowe. Usunięcie nieaktywnego wdrożenia nie powoduje usunięcia lub wpływu na bazowy dostosowany model, a dostosowany model można wdrożyć ponownie w dowolnym momencie. Zgodnie z opisem w cenniku Foundry każdy spersonalizowany (dostosowany) model, który został wdrożony, wiąże się z kosztem hostingu godzinowego, niezależnie od tego, czy są wykonywane wywołania ukończeń lub zakończeń czatu do modelu.
Aby dowiedzieć się więcej na temat planowania kosztów i zarządzania nimi za pomocą rozwiązania Foundry, zapoznaj się ze wskazówkami w temacie Planowanie kosztów usługi Foundry i zarządzanie nimi.
Uwaga / Notatka
Tylko jedno wdrożenie jest dozwolone dla modelu niestandardowego. Jeśli wybierzesz już wdrożony model niestandardowy, zostanie wyświetlony komunikat o błędzie. Aby wdrożyć model niestandardowy, wybierz model niestandardowy do wdrożenia, a następnie wybierz pozycję Wdróż model.
Zostanie otwarte okno dialogowe Wdrażanie modelu . W oknie dialogowym wprowadź nazwę wdrożenia , a następnie wybierz pozycję Wdróż , aby rozpocząć wdrażanie modelu niestandardowego.
Możesz również wdrożyć dostosowany model za pomocą karty Modele i punkty końcowe , wybierając przycisk Wdróż model , a następnie wybierając pozycję Wdróż dostosowany model z listy rozwijanej
Następnie wybierz dostosowany model, który chcesz wdrożyć, i wybierz pozycję Wdróż.
Wdrażanie w różnych regionach
Dostrajanie wspiera wdrażanie dostosowanego modelu w innym regionie niż tam, gdzie został pierwotnie dostosowany. Można również wdrożyć w innej subskrypcji lub regionie.
Jedynymi ograniczeniami jest to, że nowy region musi również obsługiwać dostrajanie, a podczas wdrażania subskrypcji krzyżowej konto generujące token autoryzacji dla wdrożenia musi mieć dostęp zarówno do subskrypcji źródłowych, jak i docelowych.
Wdrożenie między subskrypcjami lub regionami można wykonać za pośrednictwem języka Python.
Użyj wdrożonego modelu niestandardowego
Po wdrożeniu modelu niestandardowego można go użyć jak każdy inny wdrożony model. Możesz użyć Playgrounds w portalu Foundry, aby eksperymentować z nowym wdrożeniem. Możesz nadal używać tych samych parametrów w modelu niestandardowym, takich jak temperatura i max_tokens, tak jak w przypadku innych wdrożonych modeli.
Wyczyść swoje dopracowane modele
Możesz usunąć dostosowany model z listy modeli dostrajania w narzędziu Foundry lub na stronie szczegółów modelu. Aby usunąć dostosowany model ze strony Dostrajanie precyzyjne,
- Wybierz z menu paska bocznego w projekcie Foundry pozycję Dostrajanie.
- Wybierz przycisk Usuń, aby usunąć dostosowany model.
Uwaga / Notatka
Nie można usunąć modelu niestandardowego, jeśli ma istniejące wdrożenie. Najpierw musisz usunąć wdrożenie swojego modelu, zanim usuniesz swój model niestandardowy.
Tworzenie klienta do korzystania z modelu
W poniższych sekcjach opisano sposób dostosowywania modelu w języku Python. Aby znaleźć przykładowy notes tego kodu, zobacz Dostosowywanie funkcji LLM z modelem jako usługą.
- Zainstaluj zależności, aby rozpocząć dostosowywanie modelu.
%pip install azure-ai-ml
%pip install azure-identity
%pip install mlflow
%pip install azureml-mlflow
- Utwórz klienta do wykorzystywania modelu. Następujący kod używa adresu URL punktu końcowego i klucza, które są przechowywane w zmiennych środowiskowych. Zastąp <SUBSCRIPTION_ID>, <RESOURCE_GROUP_NAME> i <WORKSPACE_NAME> własnymi wartościami.
from azure.ai.ml import MLClient
from azure.identity import (
DefaultAzureCredential,
InteractiveBrowserCredential,
)
try:
credential = DefaultAzureCredential()
credential.get_token("https://management.azure.com/.default")
except Exception as ex:
credential = InteractiveBrowserCredential()
try:
workspace_ml_client = MLClient.from_config(credential=credential)
except:
workspace_ml_client = MLClient(
credential,
subscription_id="<SUBSCRIPTION_ID>",
resource_group_name="<RESOURCE_GROUP_NAME>",
workspace_name="<PROJECT_NAME OR WORKSPACE_NAME>",
)
# The models, fine tuning pipelines and environments are available in various AzureML system registries,
# Example: Phi family of models are in "azureml", Llama family of models are in "azureml-meta" registry.
registry_ml_client = MLClient(credential, registry_name="azureml")
# Get AzureML workspace object.
workspace = workspace_ml_client._workspaces.get(workspace_ml_client.workspace_name)
workspace.id
Znajdowanie modeli z obsługą dostrajania
Katalog modeli Foundry oferuje obsługę dostrajania wielu typów modeli, w tym uzupełniania czatów i generowania tekstu. Aby uzyskać listę modeli i regionów, które obsługują dostrajanie, zobacz Dostępność regionów dla modeli w bezserwerowych interfejsach API.
Zadania dostrajania szczegółowego są dostępne tylko dla użytkowników, których subskrypcja platformy Azure należy do konta rozliczeniowego w regionie, w którym dostawca modelu udostępnia ofertę. Jeśli oferta jest dostępna w odpowiednim regionie, użytkownik musi mieć zasób projektu w regionie świadczenia usługi Azure, w którym model jest dostępny do wdrożenia lub dostrajania, zgodnie z obowiązującymi przepisami.
W tym przykładzie użyto modelu Phi-4-mini-instruct . W tym fragmencie kodu właściwość identyfikatora modelu jest przekazywana jako dane wejściowe do zadania dostrajania. Jest to również dostępne jako pole Asset ID na stronie szczegółów modelu w katalogu modeli Foundry.
model_name = "Phi-4-mini-instruct"
model_to_finetune = registry_ml_client.models.get(model_name, label="latest")
print(
"\n\nUsing model name: {0}, version: {1}, id: {2} for fine tuning".format(
model_to_finetune.name, model_to_finetune.version, model_to_finetune.id
)
)
Przygotowywanie danych do dostrajania
Przygotuj dane szkoleniowe i weryfikacyjne, aby dostroić model. Dane szkoleniowe i weryfikacyjne składają się z przykładów danych wejściowych i wyjściowych dotyczących sposobu, w jaki model ma działać.
Upewnij się, że wszystkie przykłady szkoleniowe są zgodne z oczekiwanym formatem wnioskowania. Aby efektywnie dostosowywać modele, zapewnij zróżnicowany zestaw danych, utrzymując równowagę danych, w tym różne scenariusze i okresowo uściśliając dane szkoleniowe w celu dopasowania ich do rzeczywistych oczekiwań. Te działania ostatecznie prowadzą do bardziej dokładnych i zrównoważonych odpowiedzi modelu.
Wskazówka
Różne typy modeli wymagają innego formatu danych treningowych.
Przykładowy format pliku
Obsługiwany typ pliku to JSON Lines (JSONL). Pliki są przesyłane do domyślnego magazynu danych i udostępniane w projekcie.
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}
Utwórz dane wejściowe treningowe
Ten fragment kodu przedstawia sposób definiowania zestawu danych szkoleniowych.
from azure.ai.ml.constants import AssetTypes
from azure.ai.ml.entities import Data
dataset_version = "1"
train_dataset_name = "chat_training_small"
try:
train_data_asset = workspace_ml_client.data.get(
train_dataset_name, version=dataset_version
)
print(f"Dataset {train_dataset_name} already exists")
except:
print("creating dataset")
train_data = Data(
path=f"./train.jsonl",
type=AssetTypes.URI_FILE,
description="Training dataset",
name=train_dataset_name,
version="1",
)
train_data_asset = workspace_ml_client.data.create_or_update(train_data)
Tworzenie danych walidacji
W następnym kroku przedstawiono opcje konfigurowania modelu w celu używania danych walidacji w procesie trenowania. Jeśli nie chcesz używać danych walidacji, możesz pominąć ten krok, aby przejść do następnej sekcji. W przeciwnym razie, jeśli masz zestaw danych weryfikacji, możesz wybrać istniejące przygotowane dane weryfikacji lub przekazać nowe przygotowane dane weryfikacji do użycia podczas dostosowywania modelu.
from azure.ai.ml.entities import Data
dataset_version = "1"
validation_dataset_name = "chat_validation_small"
try:
validation_data_asset = workspace_ml_client.data.get(
validation_dataset_name, version=dataset_version
)
print(f"Dataset {validation_dataset_name} already exists")
except:
print("creating dataset")
validation_data = Data(
path=f"./validation.jsonl",
type=AssetTypes.URI_FILE,
description="Validation dataset",
name=validation_dataset_name,
version="1",
)
validation_data_asset = workspace_ml_client.data.create_or_update(validation_data)
Tworzenie subskrypcji platformy handlowej dla modeli partnerskich
Ten krok jest wymagany dla wszystkich modeli innych niż Microsoft. Przykładem modelu firmy Microsoft jest rodzina modeli Phi.
model_id_to_subscribe = "/".join(model_to_finetune.id.split("/")[:-2])
print(model_id_to_subscribe)
normalized_model_name = model_name.replace(".", "-")
from azure.ai.ml.entities import MarketplaceSubscription
subscription_name = f"{normalized_model_name}-sub"
marketplace_subscription = MarketplaceSubscription(
model_id=model_id_to_subscribe,
name=subscription_name,
)
# note: this will throw exception if the subscription already exists or subscription is not required (for example, if the model is not in the marketplace like Phi family)
try:
marketplace_subscription = (
workspace_ml_client.marketplace_subscriptions.begin_create_or_update(
marketplace_subscription
).result()
)
except Exception as ex:
print(ex)
Prześlij zadanie dostrajania przy użyciu modelu i danych jako wejścia
Do dostosowania modelu wymagany jest następujący zestaw parametrów.
-
model: Podstawowy model do przestrojenia -
training_data: Dane szkoleniowe do dostrajania modelu podstawowego -
validation_data: Dane walidacji dostrajania modelu podstawowego -
task: Zadanie dostrajania do wykonania, na przykład CHAT_COMPLETION na potrzeby zadań dostrajania ukończenia czatu -
outputs: Nazwa zarejestrowanego modelu wyjściowego
Następujące parametry są opcjonalne:
-
hyperparameters: Parametry kontrolujące proces dostrajania w czasie wykonywania -
name: Nazwa zadania dostrajania -
experiment_name: nazwa eksperymentu dla zadania optymalizacji -
display_name: Nazwa wyświetlana zadania dostrajania
from azure.ai.ml.finetuning import FineTuningTaskType, create_finetuning_job
import uuid
guid = uuid.uuid4()
short_guid = str(guid)[:8]
display_name = f"{model_name}-display-name-{short_guid}-from-sdk"
name = f"{model_name}t-{short_guid}-from-sdk"
output_model_name_prefix = f"{model_name}-{short_guid}-from-sdk-finetuned"
experiment_name = f"{model_name}-from-sdk"
finetuning_job = create_finetuning_job(
task=FineTuningTaskType.CHAT_COMPLETION,
training_data=train_data_asset.id,
validation_data=validation_data_asset.id,
hyperparameters={
"per_device_train_batch_size": "1",
"learning_rate": "0.00002",
"num_train_epochs": "1",
},
model=model_to_finetune.id,
display_name=display_name,
name=name,
experiment_name=experiment_name,
tags={"foo_tag": "bar"},
properties={"my_property": "my_value"},
output_model_name_prefix=output_model_name_prefix,
created_job = workspace_ml_client.jobs.create_or_update(finetuning_job)
workspace_ml_client.jobs.get(created_job.name)
status = workspace_ml_client.jobs.get(created_job.name).status
import time
while True:
status = workspace_ml_client.jobs.get(created_job.name).status
print(f"Current job status: {status}")
if status in ["Failed", "Completed", "Canceled"]:
print("Job has finished with status: {0}".format(status))
break
else:
print("Job is still running. Checking again in 30 seconds.")
time.sleep(30)
finetune_model_name = created_job.outputs["registered_model"]["name"]
finetune_model_name
Wdrażanie dostosowanego modelu
Po pomyślnym zakończeniu zadania dostrajania można wdrożyć model niestandardowy.
Ważne
Po wdrożeniu dostosowanego modelu i zakończeniu pracy z punktem końcowym pamiętaj, aby wyczyścić wszystkie nieaktywne punkty końcowe. Usunięcie nieaktywnego wdrożenia nie powoduje usunięcia lub wpływu na bazowy dostosowany model, a dostosowany model można wdrożyć ponownie w dowolnym momencie. Zgodnie z opisem w cenniku Foundry każdy spersonalizowany (dostosowany) model, który został wdrożony, wiąże się z kosztem hostingu godzinowego, niezależnie od tego, czy są wykonywane wywołania ukończeń lub zakończeń czatu do modelu.
Aby dowiedzieć się więcej na temat planowania kosztów i zarządzania nimi za pomocą rozwiązania Foundry, zapoznaj się ze wskazówkami w temacie Planowanie kosztów centrów Foundry i zarządzanie nimi.
# Deploy the model as a serverless endpoint
endpoint_name = f"{normalized_model_name}-ft-{short_guid}" # Name must be unique
model_id = f"azureml://locations/{workspace.location}/workspaces/{workspace._workspace_id}/models/{finetune_model_name}/versions/1"
Obsługiwane scenariusze biznesowe dla dopasowania
Dla wdrażania bezserwerowego interfejsu API obsługiwane są różne scenariusze dla przedsiębiorstw. W poniższej tabeli przedstawiono obsługiwane konfiguracje dla zarządzania siecią magazynowania użytkowników oraz uwierzytelniania, aby zapewnić bezproblemowe działanie w środowisku korporacyjnym.
Uwaga / Notatka
- Uwierzytelnianie połączeń danych można zmienić za pomocą narzędzia Foundry, klikając połączenie z magazynem danych, w którym przechowywany jest zestaw danych, a następnie przechodząc do sekcji Szczegóły dostępu i ustawienia >.
- Uwierzytelnianie magazynu można zmienić na stronie >Konfiguracje> usługi Azure Storage >Zezwalaj na dostęp do klucza konta magazynu.
- Sieć magazynu można zmienić na stronie Sieci usługi Azure Storage.>
| Sieć magazynu | Uwierzytelnianie dla magazynu danych | Uwierzytelnianie połączenia danych | Pomoc |
|---|---|---|---|
| Dostęp do sieci publicznej = włączony | Włączony klucz konta | Sygnatura dostępu współdzielonego/klucz konta | Tak, doświadczenie użytkownika i zestaw SDK |
| Dostęp do sieci publicznej = włączony | Klucz konta jest wyłączony | Uwierzytelnianie oparte na Entra (bez użycia poświadczeń) | Tak, doświadczenie użytkownika i zestaw SDK Uwaga: dla doświadczenia użytkownika może być konieczne dodanie roli Storage Blob Data Reader lub Storage Blob Data Contributor dla twojego identyfikatora użytkownika na koncie magazynu lub zmianę metody uwierzytelniania połączenia, aby używać klucza konta lub tokenu SAS |
| Włączone z wybranych sieci wirtualnych i adresów IP | Włączony klucz konta | Klucz konta | Tak, doświadczenie użytkownika i zestaw SDK Uwaga: w przypadku środowiska użytkownika adres IP komputera z uruchomioną przeglądarką musi znajdować się na wybranej liście |
| Włączone z wybranych sieci wirtualnych i adresów IP | Włączony klucz konta | SAS | Tak, doświadczenie użytkownika i zestaw SDK Uwaga: w przypadku środowiska użytkownika adres IP komputera z uruchomioną przeglądarką musi znajdować się na wybranej liście |
| Włączone z wybranych sieci wirtualnych i adresów IP | Klucz konta jest wyłączony | Uwierzytelnianie oparte na Entra (bez użycia poświadczeń) | Tak, UX i SDK. Uwaga: w przypadku środowiska użytkownika może być konieczne dodanie roli Storage Blob Data Reader lub Storage Blob Data Contributor dla identyfikatora użytkownika w koncie magazynu, lub zmiany uwierzytelnienia połączenia na użycie klucza konta lub tokenu SAS. Upewnij się również, że adres IP obliczeń, na którym jest uruchomiona przeglądarka, musi znajdować się na wybranej liście |
| Dostęp do sieci publicznej = wyłączony | Włączony klucz konta | Sygnatura dostępu współdzielonego/klucz konta | Tak, UX i SDK. Uwaga: aby przesyłanie i składanie danych UX działało, należy uzyskać dostęp do obszaru roboczego w sieci wirtualnej, który ma odpowiedni dostęp do magazynu |
| Dostęp do sieci publicznej = wyłączony | Klucz konta jest wyłączony | Uwierzytelnianie oparte na Entra (bez użycia poświadczeń) | Tak, UX i SDK. Uwaga: aby przesyłanie i składanie danych UX działało, należy uzyskać dostęp do obszaru roboczego w sieci wirtualnej, który ma odpowiedni dostęp do magazynu |
Powyższe scenariusze powinny również działać w zarządzanym obszarze roboczym sieci wirtualnej. Aby dowiedzieć się, jak skonfigurować zarządzaną sieć wirtualną Foundry Hub, zobacz How to set up a managed network for Foundry hubs (Jak skonfigurować sieć zarządzaną dla centrów Foundry).
Korzystanie z kluczy zarządzanych przez klienta (CMKs) nie jest obsługiwanym scenariuszem korporacyjnym z doprecyzowaniem wdrożenia bezserwerowego interfejsu API.
Problemy z dostrajaniem unikatowych konfiguracji sieci w przestrzeni roboczej i magazynowej zwykle wskazują na problem przy konfiguracji sieci.
Wdrażanie między regionami
Dostrajanie umożliwia wdrażanie modelu dostrojonego do innego regionu niż ten, w którym model został pierwotnie dostrojony. Można również wdrożyć w innej subskrypcji lub regionie.
Jedynymi ograniczeniami jest to, że nowy region musi również obsługiwać dostrajanie, a podczas wdrażania subskrypcji krzyżowej konto generujące token autoryzacji dla wdrożenia musi mieć dostęp zarówno do subskrypcji źródłowych, jak i docelowych.
Wdrożenie między subskrypcjami lub regionami można wykonać za pośrednictwem języka Python.
# Create Cross region FT deployment client
from azure.ai.ml.entities import ServerlessEndpoint
from azure.ai.ml import MLClient
from azure.identity import (
DefaultAzureCredential,
InteractiveBrowserCredential,
)
try:
credential = DefaultAzureCredential()
credential.get_token("https://management.azure.com/.default")
except Exception as ex:
credential = InteractiveBrowserCredential()
try:
workspace_ml_client = MLClient.from_config(credential=credential)
except:
workspace_ml_client = MLClient(
credential,
subscription_id="<TARGET_SUBSCRIPTION_ID>",
resource_group_name="<TARGET_RESOURCE_GROUP_NAME>",
workspace_name="<TARGET_PROJECT_NAME>",
)
workspace = workspace_ml_client._workspaces.get(workspace_ml_client.workspace_name)
workspace_region = workspace.location
model_to_finetune.tags
supported_regions = model_to_finetune.tags["maas-finetuning-deploy-regions"]
supported_regions
if workspace_region in supported_regions:
print(f"Creating endpoint in the region:{workspace_region}")
serverless_endpoint = ServerlessEndpoint(name=endpoint_name, model_id=model_id)
created_endpoint = workspace_ml_client.serverless_endpoints.begin_create_or_update(
serverless_endpoint
).result()
else:
raise ValueError(
f"For the model : {model_to_finetune}, the target region: {workspace_region} is not supported for deployment, the supported regions: {supported_regions}"
)
Użyj wdrożonego modelu niestandardowego
Po wdrożeniu modelu niestandardowego można go użyć jak każdy inny wdrożony model. Możesz nadal używać tych samych parametrów z modelem niestandardowym, takich jak temperature i max_tokens, podobnie jak w przypadku innych wdrożonych modeli.
endpoint = workspace_ml_client.serverless_endpoints.get(endpoint_name)
endpoint_keys = workspace_ml_client.serverless_endpoints.get_keys(endpoint_name)
auth_key = endpoint_keys.primary_key
import requests
url = f"{endpoint.scoring_uri}/v1/chat/completions"
payload = {
"max_tokens": 1024,
"messages": [
{
"content": "This script is great so far. Can you add more dialogue between Amanda and Thierry to build up their chemistry and connection?",
"role": "user",
}
],
}
headers = {"Content-Type": "application/json", "Authorization": f"{auth_key}"}
response = requests.post(url, json=payload, headers=headers)
response.json()
Wyczyść swoje dopracowane modele
Po zakończeniu pracy nad modelem uruchom następujący kod, aby wyczyścić doprecyzowany model.
workspace_ml_client.serverless_endpoints.begin_delete(endpoint_name).result()
Zagadnienia dotyczące kosztów i limitów przydziału dla modeli wdrożonych jako wdrożenie bezserwerowego interfejsu API
Przydział jest zarządzany dla każdego wdrożenia. Każde wdrożenie ma limit szybkości wynoszący 200 000 tokenów na minutę i 1000 żądań interfejsu API na minutę. Obecnie jednak ograniczamy jedno wdrożenie na model na projekt. Skontaktuj się z pomocą techniczną platformy Microsoft Azure, jeśli bieżące limity szybkości nie są wystarczające dla Twoich scenariuszy.
Koszt modeli firmy Microsoft
Informacje o cenach można znaleźć na karcie Cennik i terminy kreatora wdrażania podczas wdrażania modeli firmy Microsoft (takich jak modele Phi-3) jako wdrożenia bezserwerowego interfejsu API.
Koszt dla modeli innych niż Microsoft
Modele innych firm niż Microsoft, wdrożone jako bezserwerowy interfejs API, są oferowane za pośrednictwem Azure Marketplace i zintegrowane z Foundry do użycia. Cennik witryny Azure Marketplace można znaleźć podczas wdrażania lub dostrajania tych modeli.
Za każdym razem, gdy projekt subskrybuje daną ofertę z witryny Azure Marketplace, tworzony jest nowy zasób w celu śledzenia kosztów związanych z jego zużyciem. Ten sam zasób służy do śledzenia kosztów skojarzonych z wnioskowaniem i dostrajania; jednak w ramach śledzenia każdego scenariusza można niezależnie śledzić wiele mierników.
Aby uzyskać więcej informacji na temat śledzenia kosztów, zobacz Monitorowanie kosztów modeli oferowanych za pośrednictwem witryny Azure Marketplace.
Przykładowy notes
Możesz użyć tego przykładowego notesu, aby utworzyć samodzielne zadanie dostrajania, aby poprawić zdolność modelu do podsumowywania dialogów między dwiema osobami, korzystając z zestawu danych Samsum.
Wykorzystane dane treningowe to zestaw danych ultrachat_200k, który jest podzielony na cztery części odpowiednie do nadzorowanego dostrajania (sft) i rankingowania generacji (gen). Notatnik używa wszystkich dostępnych modeli sztucznej inteligencji platformy Azure do zadania ukończenia czatu (jeśli chcesz użyć innego modelu niż ten, który jest używany w notatniku, możesz zastąpić nazwę modelu).
Notatnik zawiera konfigurowanie wymagań wstępnych, wybór modelu do dostrajania, tworzenie zestawów danych do trenowania i walidacji, konfigurowanie i przesyłanie zadania dostrajania, a na koniec tworzenie wdrożenia bezserwerowego przy użyciu dostrojonego modelu do wnioskowania przykładowego.
Przykładowy interfejs wiersza polecenia
Ponadto możesz użyć tego przykładowego CLI, aby utworzyć samodzielne zadanie fine-tuningu, aby ulepszyć zdolność modelu do podsumowywania dialogów między dwiema osobami, korzystając z zestawu danych.
type: finetuning
name: "Phi-3-mini-4k-instruct-with-amlcompute"
experiment_name: "Phi-3-mini-4k-instruct-finetuning-experiment"
display_name: "Phi-3-mini-4k-instruct-display-name"
task: chat_completion
model_provider: custom
model:
path: "azureml://registries/azureml/models/Phi-3-mini-4k-instruct/versions/14"
type: mlflow_model
training_data: train.jsonl
validation_data:
path: validation.jsonl
type: uri_file
hyperparameters:
num_train_epochs: "1"
per_device_train_batch_size: "1"
learning_rate: "0.00002"
properties:
my_property: "my_value"
tags:
foo_tag: "bar"
outputs:
registered_model:
name: "Phi-3-mini-4k-instruct-finetuned-model"
type: mlflow_model
Użyte dane szkoleniowe są takie same jak pokazane w notesie zestawu SDK. CLI korzysta z dostępnych modeli sztucznej inteligencji platformy Azure dla zadania generowania odpowiedzi w czacie. Jeśli wolisz użyć innego modelu niż ten w przykładzie interfejsu wiersza polecenia, możesz odpowiednio zaktualizować argumenty, takie jak model path, .
Filtrowanie zawartości
Modele wdrażania bezserwerowego interfejsu API są chronione przez bezpieczeństwo zawartości usługi Azure AI. Po wdrożeniu w punktach końcowych czasu rzeczywistego możesz zrezygnować z tej funkcji.
Po włączeniu funkcji bezpieczeństwa treści Azure AI zarówno polecenie, jak i jego realizacja są przetwarzane przez zestaw modeli klasyfikacyjnych, które mają na celu wykrywanie i zapobieganie tworzeniu szkodliwych treści. System filtrowania treści wykrywa i podejmuje działania w odniesieniu do określonych kategorii potencjalnie szkodliwych treści w żądaniach wejściowych i wynikach wyjściowych.
Aby dowiedzieć się więcej na temat bezpieczeństwa zawartości usługi Azure AI, zobacz Filtrowanie zawartości w portalu Foundry.