Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure OpenAI w modelach usługi Azure AI Foundry umożliwia dostosowanie naszych modeli do osobistych zestawów danych przy użyciu procesu znanego jako dostrajanie. Ten etap dostosowywania pozwala w pełni wykorzystać usługę, zapewniając:
- Wyniki o wyższej jakości niż to, co można uzyskać tylko z monitów inżynieryjnych
- Możliwość trenowania na większej liczbie przykładów niż można zmieścić w maksymalnym limicie kontekstu żądania modelu.
- Oszczędności tokenów z powodu krótszych poleceń
- Żądania o mniejsze opóźnienia, szczególnie w przypadku korzystania z mniejszych modeli.
W przeciwieństwie do uczenia przy użyciu kilku przykładów, dostrajanie modelu poprawia jego działanie poprzez trenowanie na wiele więcej przykładów niż można zawrzeć w zapytaniu, co pozwala uzyskać lepsze wyniki w szerokim zakresie zadań. Ponieważ dostrajanie precyzyjne dostosowuje wagi modelu podstawowego, aby poprawić wydajność określonego zadania, nie trzeba uwzględniać tak wielu przykładów ani instrukcji w monicie. Oznacza to, że mniej tekstu jest wysyłanych i mniej tokenów przetwarzanych na każdym wywołaniu interfejsu API, potencjalnie oszczędza koszt i poprawia opóźnienie żądań.
Używamy modelu LoRA lub adaptacji o niskiej rangi, aby dostroić modele w sposób, który zmniejsza ich złożoność bez znaczącego wpływu na wydajność. Ta metoda działa przez przybliżenie oryginalnej macierzy o wysokiej randze macierzą o niższej randze, dzięki czemu dostrajaniu podlega tylko mniejszy podzbiór ważnych parametrów w fazie trenowania nadzorowanego, co sprawia, że model jest bardziej zarządzalny i wydajny. Dla użytkowników sprawia to, że szkolenie jest szybsze i bardziej przystępne niż inne techniki.
W portalu usługi Azure AI Foundry dostępne są dwa unikatowe środowiska dostrajania:
- Widok centrum/projektu — obsługuje dostrajanie modeli od wielu dostawców, takich jak Azure OpenAI, Meta Llama, Microsoft Phi itp.
Widok skoncentrowany na Azure OpenAI — obsługuje tylko dostosowywanie modeli Azure OpenAI, ale także obsługuje dodatkowe funkcje, takie jak integracja zapowiedzi Weights & Biases (W&B).
Jeśli dostrajasz tylko modele Azure OpenAI, zalecamy doświadczenie precyzyjnego dostrajania zorientowane na Azure OpenAI, które jest dostępne, przechodząc do strony https://ai.azure.com/resource/overview.
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 Warunki dodatkowe korzystania z testowych wersji Microsoft Azure.
Wymagania wstępne
- Przeczytaj przewodnik dotyczący dostrajania Azure OpenAI .
- Subskrypcja platformy Azure. Utwórz je bezpłatnie.
- Zasób usługi Azure OpenAI, który znajduje się w regionie obsługującym dostrajanie modelu Azure OpenAI. Sprawdź tabelę podsumowania modeli i dostępność w regionach, aby uzyskać listę dostępnych modeli według regionów i obsługiwanych funkcji. Aby uzyskać więcej informacji, zobacz Tworzenie zasobu i wdrażanie modelu za pomocą usługi Azure OpenAI.
- Dostrajanie dostępu wymaga kontrybutora usług Cognitive Services OpenAI.
- Jeśli nie masz jeszcze dostępu do wyświetlania limitu przydziału i wdrażania modeli w portalu usługi Azure AI Foundry, będziesz potrzebować dodatkowych uprawnień.
Obsługiwane modele
Sprawdź stronę modeli, aby sprawdzić, które regiony obecnie obsługują dostrajanie.
Lub możesz dostosować wcześniej dostrojony model, sformatowany jako base-model.ft-{jobid}.
Zapoznaj się z przepływem pracy portalu usługi Azure AI Foundry
Poświać chwilę na przejrzenie przepływu pracy dostrajania na potrzeby korzystania z portalu usługi Azure AI Foundry:
- Przygotuj dane szkoleniowe i weryfikacyjne.
- Użyj dialogu Tworzenie dostosowanego modelu w portalu usługi Azure AI Foundry, aby wytrenować model dostosowany.
- Wybierz metodę trenowania.
- Wybierz model podstawowy.
- Wybierz typ trenowania
- Wybierz dane szkoleniowe.
- Opcjonalnie wybierz dane weryfikacji.
- Opcjonalnie skonfiguruj parametry dla zadania strojenia.
- Jeśli chcesz, włącz automatyczne wdrażanie dla wynikowego modelu dostosowanego.
- Przejrzyj wybrane opcje i wytrenuj nowy niestandardowy model.
- Sprawdź stan dostosowanego niestandardowego modelu.
- Wdróż model niestandardowy do zastosowania.
- Użyj modelu niestandardowego.
- Opcjonalnie przeanalizuj model niestandardowy pod kątem wydajności i dopasowania.
Przygotowywanie danych treningowych i weryfikacyjnych
Dane szkoleniowe i zestawy danych do walidacji składają się z przykładów wejściowych i wyjściowych pokazujących, jak ma działać model.
Używane dane szkoleniowe i weryfikacyjne muszą być sformatowane jako dokument JSON Lines (JSONL) i muszą mieć format konwersacyjny używany przez interfejs API Chat Completions.
Zazwyczaj zaleca się użycie instrukcji i monitów, które okazały się najlepsze w każdym przykładzie trenowania. Pomoże to uzyskać najlepsze wyniki, zwłaszcza jeśli masz mniej niż sto przykładów.
Przykładowy format pliku
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who discovered Antarctica?"}, {"role": "assistant", "content": "Some chaps named Fabian Gottlieb von Bellingshausen and Mikhail Lazarev, as if they don't teach that in every school!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the biggest ocean?"}, {"role": "assistant", "content": "The Pacific Ocean. It's not like it's a small pond or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest planet?"}, {"role": "assistant", "content": "It's called Jupiter, you might have heard of it...or not."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who painted the Mona Lisa?"}, {"role": "assistant", "content": "Oh, some obscure artist named Leonardo da Vinci. Not that he is famous or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the boiling point of water?"}, {"role": "assistant", "content": "Exciting fact of the day: it's 100 degrees Celsius. Life-changing, isn't it?"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'The Odyssey'?"}, {"role": "assistant", "content": "Oh, just some poet named Homer. Nothing special, really."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest mammal?"}, {"role": "assistant", "content": "Blue Whale. Quite a big fish isn't it? Oh wait, it's not a fish!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the highest mountain peak?"}, {"role": "assistant", "content": "Everest. Brace yourself, it's not a walk in the park."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who invented the telephone?"}, {"role": "assistant", "content": "A guy named Alexander Graham Bell. Bet you didn't guess that one!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the distance from Earth to the Sun?"}, {"role": "assistant", "content": "About 93 million miles. Just a quick drive, really."}]}
Format pliku czatu wieloetapowego Azure OpenAI
Obsługiwane jest również wiele kolei konwersacji w jednym wierszu pliku szkoleniowego jsonl. Aby pominąć precyzyjne dostosowywanie określonych komunikatów asystenta, dodaj opcjonalną parę wartości klucza weight
. Obecnie weight
można ustawić wartość 0 lub 1.
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}
Ukończenia rozmów z użyciem wizji
{"messages": [{"role": "user", "content": [{"type": "text", "text": "What's in this image?"}, {"type": "image_url", "image_url": {"url": "https://raw.githubusercontent.com/MicrosoftDocs/azure-ai-docs/main/articles/ai-services/openai/media/how-to/generated-seattle.png"}}]}, {"role": "assistant", "content": "The image appears to be a watercolor painting of a city skyline, featuring tall buildings and a recognizable structure often associated with Seattle, like the Space Needle. The artwork uses soft colors and brushstrokes to create a somewhat abstract and artistic representation of the cityscape."}]}
Oprócz formatu JSONL pliki danych trenowania i walidacji muszą być zakodowane w formacie UTF-8 i zawierać znak porządku bajtów (BOM). Rozmiar pliku musi być mniejszy niż 512 MB.
Zagadnienia dotyczące rozmiaru zestawów danych
Tym więcej przykładów treningowych, tym lepiej. Zadania dostrajania nie będą kontynuowane bez co najmniej 10 przykładów szkoleniowych, ale taka mała liczba nie wystarczy, aby zauważalnie wpłynąć na odpowiedzi modelu. Najlepszym rozwiązaniem jest zapewnienie setek, jeśli nie tysięcy, przykładów szkoleniowych, które mają być skuteczne. Zaleca się rozpoczęcie od 50 dobrze przygotowanych danych treningowych.
Ogólnie rzecz biorąc, podwojenie rozmiaru zestawu danych może prowadzić do liniowego wzrostu jakości modelu. Należy jednak pamiętać, że przykłady niskiej jakości mogą negatywnie wpływać na wydajność. Jeśli wytrenujesz model na dużej ilości danych wewnętrznych, bez uprzedniego przycinania zestawu danych tylko do najwyższej jakości przykładów, możesz otrzymać model, który działa znacznie gorzej niż się spodziewano.
Tworzenie dostosowanego modelu
Portal usługi Azure AI Foundry zawiera okno dialogowe Tworzenie dostosowanego modelu , więc w jednym miejscu można łatwo utworzyć i wytrenować dostosowany model dla zasobu platformy Azure.
Przejdź do portalu azure AI Foundry pod adresem https://ai.azure.com/ i zaloguj się przy użyciu poświadczeń, które mają dostęp do zasobu usługi Azure OpenAI. Podczas procesu logowania wybierz odpowiedni katalog, subskrypcję Azure oraz zasób Azure OpenAI.
W portalu Azure AI Foundry przejdź do > i wybierz opcję Dostrajanie modelu.
Wybierz model, aby dostroić, a następnie wybierz przycisk Dalej , aby kontynuować.
Powinno zostać wyświetlone okno dialogowe Tworzenie dostosowanego modelu .
Wybieranie metody trenowania
Pierwszym krokiem jest potwierdzenie wyboru modelu i metody trenowania. Nie wszystkie modele obsługują wszystkie metody trenowania.
- Nadzorowane dostrajanie (SFT): obsługiwane przez wszystkie modele niezwiązane z rozumowaniem.
- Optymalizacja preferencji bezpośrednich (wersja zapoznawcza) (DPO): obsługiwana przez GPT-4o.
- Dostrajanie wzmacniania (wersja zapoznawcza) (RFT): obsługiwane przez modele rozumowania, takie jak o4-mini.
Podczas wybierania modelu możesz również wybrać wcześniej dostosowany model.
Wybierz typ trenowania
Wybierz warstwę szkoleniową, której chcesz użyć dla zadania dostrajania:
- Standardowa: szkolenie odbywa się w bieżącym regionie zasobu usługi Azure OpenAI, zapewniając miejsce przechowywania danych.
- Globalny (wersja zapoznawcza): bardziej przystępne cenowo szkolenie według tokena, nie oferuje rezydencji danych.
Jeśli nie masz wymagań dotyczących rezydencji danych, opcja Global jest dobrym wyborem, aby skorzystać z możliwości trenowania poza bieżącym regionem. Podczas wersji publicznej Global może być niedostępny w bieżącym regionie. Konsultacja
W niektórych przypadkach usługa Standardowa może nie być dostępna w bieżącym regionie. Jeśli potrzebujesz miejsca przechowywania danych, zapoznaj się z regionami wymienionymi na liście dostępności modelu dla wybranego modelu.
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 przez wybranie pozycji Dodaj dane szkoleniowe.
W oknie dialogowym Dane trenowania są wyświetlane wszystkie istniejące, wcześniej przekazane zestawy danych, a także opcje przekazywania nowych danych szkoleniowych.
Jeśli dane szkoleniowe zostały już przekazane do usługi, wybierz pozycję Pliki z zasobu połączonej sztucznej inteligencji.
- 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.
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ć. Aby uzyskać więcej informacji na temat usługi Azure Blob Storage, zobacz Co to jest usługa Azure Blob Storage?
Uwaga / Notatka
Pliki danych treningowych muszą być sformatowane jako pliki JSONL zakodowane w formacie UTF-8 z znacznikiem kolejności bajtów (BOM). Rozmiar pliku musi być mniejszy niż 512 MB.
Wybieranie danych walidacji (opcjonalnie)
Jeśli masz zestaw danych weryfikacji, wybierz pozycję Dodaj dane szkoleniowe. Możesz wybrać istniejące przygotowane dane weryfikacji lub przekazać nowe przygotowane dane weryfikacji do użycia podczas dostosowywania modelu.
W oknie dialogowym 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ę Wybierz zestaw danych.
- Wybierz plik z listy pokazanej w okienku Dane weryfikacji.
Aby przekazać nowe dane weryfikacji, użyj jednej z następujących opcji:
- Wybierz pozycję Plik lokalny , 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.
Umożliwia zidentyfikowanie modelu (opcjonalnie)
Zalecamy również włączenie parametru suffix
, aby ułatwić rozróżnienie różnych iteracji dostosowanego modelu. Element suffix
przyjmuje ciąg o długości do 18 znaków i jest używany podczas nazywania modelu dostrojonego.
Konfigurowanie parametrów trenowania (opcjonalnie)
Możesz podać opcjonalne inicjatory i dostroić dodatkowe hiperparametry.
Ziarno kontroluje powtarzalność zadania. Przekazywanie tych samych parametrów nasion i zadania powinno generować te same wyniki, ale mogą się różnić w rzadkich przypadkach. Jeśli ziarno nie zostanie określone, zostanie wygenerowane losowo.
Następujące hiperparametry są dostępne do dostrajania za pośrednictwem portalu usługi Azure AI Foundry:
Nazwa | Typ | Opis |
---|---|---|
Rozmiar partii | 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, odkryliśmy, że większe rozmiary partii zwykle działają lepiej w przypadku większych zestawów danych. Wartość domyślna, a także 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 niższą wariancją. |
Mnożnik szybkości nauki | Liczba | Mnożnik szybkości nauki używany do trenowania. Współczynnik dostrajania uczenia to oryginalny współczynnik uczenia, który był używany do wstępnego trenowania, pomnożony 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ąć przeuczenia. |
Liczba epok | liczba całkowita | Liczba epok treningu dla modelu. Epoka odnosi się do jednego pełnego cyklu przez zestaw danych szkoleniowych. |
Włączanie automatycznego wdrażania (opcjonalnie)
Aby zaoszczędzić czas, możesz opcjonalnie włączyć automatyczne wdrażanie dla wynikowego modelu. Jeśli trenowanie zakończy się pomyślnie, model zostanie wdrożony przy użyciu wybranego typu wdrożenia. Wdrożenie zostanie nazwane na podstawie unikatowej nazwy wygenerowanej dla modelu niestandardowego oraz opcjonalnego sufiksu, który mógł zostać podany wcześniej.
Uwaga / Notatka
W przypadku automatycznego wdrażania są obecnie obsługiwane tylko wdrożenia globalne w warstwie Standardowa i Deweloper. Żadna z tych opcji nie zapewnia miejsca przechowywania danych. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją typu wdrożenia .
Przeglądanie wyborów i trenowanie modelu
Przejrzyj wybrane opcje i wybierz pozycję Prześlij , aby rozpocząć trenowanie nowego dostosowanego modelu.
Sprawdzanie stanu modelu niestandardowego
Po przesłaniu zadania dotyczącego dostrajania zostanie wyświetlona strona ze szczegółowymi informacjami na temat modelu dostrojonego. Stan i więcej informacji na temat dostosowanego modelu można znaleźć na stronie Dostrajanie w portalu Azure AI Foundry.
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.
Punkty kontrolne
Po zakończeniu każdej epoki trenowania generowany jest punkt kontrolny. Punkt kontrolny to w pełni funkcjonalna wersja modelu, która może być wdrożona i używana jako model docelowy dla kolejnych zadań dostrajania. Punkty kontrolne mogą być szczególnie przydatne, ponieważ mogą udostępniać migawki przed nadmiernym dopasowaniem. Po zakończeniu zadania dostrajania będziesz mieć trzy najnowsze wersje modelu dostępne do wdrożenia.
Analizowanie modelu niestandardowego
Usługa Azure OpenAI dołącza plik wynikowy o nazwie results.csv do każdego zadania dostrajania po zakończeniu. Plik wyników umożliwia analizowanie wydajności trenowania i walidacji modelu niestandardowego. Identyfikator pliku wyników dla każdego modelu niestandardowego jest wymieniony w kolumnie Identyfikator pliku wyników w okienku Modele na portalu usługi Azure AI Foundry. Możesz użyć identyfikatora pliku, aby zidentyfikować i pobrać plik wynikowy z okienka Pliki danych w portalu usługi Azure AI Foundry.
Plik wyników jest plikiem CSV zawierającym wiersz nagłówka i wiersz dla każdego kroku trenowania wykonywanego przez zadanie dostrajania. Plik wyników zawiera następujące kolumny:
Nazwa kolumny | Opis |
---|---|
step |
Liczba kroków treningu. Etap treningowy reprezentuje pojedyncze przejście w przód i wstecz na partii danych treningowych. |
train_loss |
Utrata partii szkoleniowej. |
train_mean_token_accuracy |
Procent tokenów w partii szkoleniowej prawidłowo przewidywany przez model. Jeśli na przykład rozmiar partii jest ustawiony na 3, a dane zawierają uzupełnienia [[1, 2], [0, 5], [4, 2]] , ta wartość jest ustawiona na 0,83 (5 z 6), jeśli model przewidział [[1, 1], [0, 5], [4, 2]] . |
valid_loss |
Strata dla partii walidacyjnej. |
validation_mean_token_accuracy |
Procent tokenów w zbiorze walidacyjnym, które model prawidłowo przewidział. Jeśli na przykład rozmiar partii jest ustawiony na 3, a dane zawierają uzupełnienia [[1, 2], [0, 5], [4, 2]] , ta wartość jest ustawiona na 0,83 (5 z 6), jeśli model przewidział [[1, 1], [0, 5], [4, 2]] . |
full_valid_loss |
Utrata walidacji obliczona na końcu każdej epoki. Gdy trening idzie dobrze, utrata powinna się zmniejszyć. |
full_valid_mean_token_accuracy |
Prawidłowa dokładność tokenu średniego obliczona na końcu każdej epoki. Kiedy trening przebiega dobrze, precyzja tokenu powinna wzrosnąć. |
Dane można również wyświetlić w pliku results.csv jako wykresy w portalu usługi Azure AI Foundry. Wybierz link dla wytrenowanego modelu i zobaczysz trzy wykresy: strata, dokładność średnia tokenów i dokładność tokenów. Jeśli podano dane weryfikacji, oba zestawy danych będą wyświetlane na tym samym wykresie.
Oczekuj, że z czasem Twoje straty się zmniejszą, a dokładność wzrośnie. Jeśli wystąpi rozbieżność między danymi treningowymi a walidacyjnymi, może to oznaczać, że model jest przetrenowany. Spróbuj trenować z mniejszą liczbą epok lub mniejszym mnożnikiem szybkości nauki.
Wdrożenie dopracowanego modelu
Po osiągnięciu satysfakcji z metryk z zadania dostrajania lub jeśli po prostu chcesz przejść do wnioskowania, musisz wdrożyć model.
Jeśli wdrażasz w celu dalszej weryfikacji, rozważ wdrożenie do testowania przy użyciu wdrożenia developerskiego.
Jeśli wszystko jest gotowe do wdrożenia w środowisku produkcyjnym lub masz określone potrzeby dotyczące rezydencji danych, postępuj zgodnie z naszym przewodnikiem wdrażania.
Użycie wdrożonego dopasowanego modelu
Po wdrożeniu dostosowanego modelu można go użyć jak każdy inny wdrożony model. Narzędzie Playground w usłudze Azure AI Foundry umożliwia eksperymentowanie z nowym wdrożeniem. Możesz również użyć interfejsu API REST, aby wywołać dostosowany model z własnej aplikacji. Możesz nawet zacząć używać tego nowego, dostosowanego modelu w przepływie monitu, aby utworzyć generacyjną aplikację sztucznej inteligencji.
Uwaga / Notatka
W przypadku modeli czatów komunikat systemowy używany do kierowania dostosowanym modelem (niezależnie od tego, czy został wdrożony, czy dostępny do testowania na placu zabaw), musi być taki sam jak komunikat systemowy używany do trenowania. Jeśli używasz innego komunikatu systemowego, model może nie działać zgodnie z oczekiwaniami.
Ciągłe dostrajanie
Po utworzeniu udoskonalonego modelu możesz chcieć ponownie udoskonalać model w miarę upływu czasu przez dalsze doskonalenie. Ciągłe dostrajanie jest procesem iteracyjnym wybierania już dostrojonego modelu jako modelu podstawowego i dostrajania go dalej w nowych zestawach przykładów szkoleniowych.
Aby wykonać precyzyjne dostrajanie modelu, który został wcześniej dostosowany, należy użyć tego samego procesu, jak opisano w artykule tworzenia dostosowanego modelu , ale zamiast określania nazwy ogólnego modelu podstawowego należy określić już dostosowany model. Niestandardowy dopasowany model wygląda tak: gpt-4o-2024-08-06.ft-d93dda6110004b4da3472d96f4dd4777-ft
Czyszczenie wdrożeń, modeli niestandardowych i plików szkoleniowych
Po zakończeniu korzystania z modelu niestandardowego możesz usunąć wdrożenie i model. W razie potrzeby możesz również usunąć pliki szkoleniowe i weryfikacyjne przekazane do usługi.
Usuń wdrożenie modelu
Ważne
Po wdrożeniu dostosowanego modelu, jeśli w dowolnym momencie wdrożenie pozostanie nieaktywne przez ponad piętnaście (15) dni, wdrożenie zostanie usunięte. Wdrożenie dostosowanego modelu jest nieaktywne, jeśli model został wdrożony ponad piętnaście (15) dni temu i nie wykonano do niego żadnych wywołań ani ukończeń czatu w ciągu nieprzerwanego 15-dniowego okresu.
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 modeli w Azure OpenAI in Azure AI Foundry, każdy precyzyjnie dostosowany model, który został wdrożony, powoduje naliczanie godzinowego kosztu hostingu, niezależnie od tego, czy są wykonywane połączenia w celu ukończenia operacji lub czatu do modelu. Aby dowiedzieć się więcej na temat planowania kosztów i zarządzania nimi za pomocą usługi Azure OpenAI, zapoznaj się ze wskazówkami w artykule Planowanie zarządzania kosztami usługi Azure OpenAI.
Możesz usunąć wdrożenie niestandardowego modelu w okienku Wdrożenia w portalu Azure AI Foundry. Wybierz wdrożenie do usunięcia, a następnie wybierz pozycję Usuń , aby usunąć wdrożenie.
Usuń swój model niestandardowy
Model niestandardowy można usunąć w okienku Modele w portalu usługi Azure AI Foundry. Wybierz model niestandardowy do usunięcia z karty Dostosowane modele , a następnie wybierz pozycję Usuń , aby usunąć model niestandardowy.
Uwaga / Notatka
Nie można usunąć modelu niestandardowego, jeśli ma istniejące wdrożenie. Przed usunięciem swojego modelu niestandardowego należy najpierw usunąć wdrożenie modelu.
Usuwanie plików szkoleniowych
Opcjonalnie możesz usunąć pliki szkoleniowe i weryfikacyjne, które przesłałeś do trenowania, oraz pliki wynikowe wygenerowane podczas trenowania, na zakładce Zarządzanie>Dane + indeksy w portalu Azure AI Foundry. Wybierz plik do usunięcia, a następnie wybierz pozycję Usuń , aby usunąć plik.
Wymagania wstępne
- Przeczytaj przewodnik dotyczący dostrajania Azure OpenAI .
- Subskrypcja platformy Azure. Utwórz je bezpłatnie.
- Zasób usługi Azure OpenAI. Aby uzyskać więcej informacji, zobacz Tworzenie zasobu i wdrażanie modelu za pomocą usługi Azure OpenAI.
- Następujące biblioteki języka Python:
os
, ,json
requests
,openai
. - Biblioteka języka Python OpenAI powinna mieć co najmniej wersję 0.28.1.
- Dostrajanie dostępu wymaga kontrybutora usług Cognitive Services OpenAI.
- Jeśli nie masz jeszcze dostępu do wyświetlania limitu przydziału i wdrażania modeli w portalu usługi Azure AI Foundry, będziesz potrzebować dodatkowych uprawnień.
Uwaga / Notatka
Interfejs API REST nie obsługuje obecnie globalnych zadań szkoleniowych. Inspekcja globalnych zadań szkoleniowych za pośrednictwem interfejsu API może zwracać nieprawidłowe informacje.
Obsługiwane modele
Sprawdź stronę modeli, aby sprawdzić, które regiony obecnie obsługują dostrajanie.
Możesz też dopasować wcześniej dostrojony model, sformatowany jako base-model.ft-{jobid}
.
Zapoznaj się z przepływem pracy dla zestawu PYTHON SDK
Poświęć chwilę na przejrzenie przepływu pracy w zakresie dostrajania przy użyciu Python SDK z usługą Azure OpenAI.
- Przygotuj dane szkoleniowe i weryfikacyjne.
- Wybierz model podstawowy.
- Przekaż dane szkoleniowe.
- Wytrenuj swój nowy dostosowany model.
- Sprawdź stan dostosowanego modelu.
- Wdróż dostosowany model do użycia.
- Użyj dostosowanego modelu.
- Opcjonalnie przeanalizuj dostosowany model pod kątem wydajności i dopasowania.
Przygotowywanie danych treningowych i weryfikacyjnych
Dane szkoleniowe i zestawy danych do walidacji składają się z przykładów wejściowych i wyjściowych pokazujących, jak ma działać model.
Używane dane szkoleniowe i weryfikacyjne muszą być sformatowane jako dokument JSON Lines (JSONL) i muszą mieć format konwersacyjny używany przez interfejs API Chat Completions.
Jeśli chcesz zapoznać się z przewodnikiem krok po kroku dotyczącym dostrajania, gpt-4o-mini-2024-07-18
zapoznaj się z samouczkiem dostrajania usługi Azure OpenAI
Przykładowy format pliku
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who discovered Antarctica?"}, {"role": "assistant", "content": "Some chaps named Fabian Gottlieb von Bellingshausen and Mikhail Lazarev, as if they don't teach that in every school!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the biggest ocean?"}, {"role": "assistant", "content": "The Pacific Ocean. It's not like it's a small pond or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest planet?"}, {"role": "assistant", "content": "It's called Jupiter, you might have heard of it...or not."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who painted the Mona Lisa?"}, {"role": "assistant", "content": "Oh, some obscure artist named Leonardo da Vinci. Not that he is famous or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the boiling point of water?"}, {"role": "assistant", "content": "Exciting fact of the day: it's 100 degrees Celsius. Life-changing, isn't it?"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'The Odyssey'?"}, {"role": "assistant", "content": "Oh, just some poet named Homer. Nothing special, really."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest mammal?"}, {"role": "assistant", "content": "Blue Whale. Quite a big fish isn't it? Oh wait, it's not a fish!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the highest mountain peak?"}, {"role": "assistant", "content": "Everest. Brace yourself, it's not a walk in the park."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who invented the telephone?"}, {"role": "assistant", "content": "A guy named Alexander Graham Bell. Bet you didn't guess that one!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the distance from Earth to the Sun?"}, {"role": "assistant", "content": "About 93 million miles. Just a quick drive, really."}]}
Format pliku czatu z wieloma zakrętami
Obsługiwane jest również wiele kolei konwersacji w jednym wierszu pliku szkoleniowego jsonl. Aby pominąć precyzyjne dostosowywanie określonych komunikatów asystenta, dodaj opcjonalną parę wartości klucza weight
. Obecnie weight
można ustawić wartość 0 lub 1.
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}
Ukończenia rozmów z użyciem wizji
{"messages": [{"role": "user", "content": [{"type": "text", "text": "What's in this image?"}, {"type": "image_url", "image_url": {"url": "https://raw.githubusercontent.com/MicrosoftDocs/azure-ai-docs/main/articles/ai-services/openai/media/how-to/generated-seattle.png"}}]}, {"role": "assistant", "content": "The image appears to be a watercolor painting of a city skyline, featuring tall buildings and a recognizable structure often associated with Seattle, like the Space Needle. The artwork uses soft colors and brushstrokes to create a somewhat abstract and artistic representation of the cityscape."}]}
Oprócz formatu JSONL pliki danych trenowania i walidacji muszą być zakodowane w formacie UTF-8 i zawierać znak porządku bajtów (BOM). Rozmiar pliku musi być mniejszy niż 512 MB.
Tworzenie zestawów danych trenowania i walidacji
Tym więcej przykładów treningowych, tym lepiej. Zadania dostrajania nie będą kontynuowane bez co najmniej 10 przykładów treningowych, ale taka mała liczba nie wystarczy, aby zauważalnie wpłynąć na odpowiedzi modelu. Najlepszym rozwiązaniem jest zapewnienie setek, jeśli nie tysięcy, przykładów szkoleniowych, które mają być skuteczne.
Ogólnie rzecz biorąc, podwojenie rozmiaru zestawu danych może prowadzić do liniowego wzrostu jakości modelu. Należy jednak pamiętać, że przykłady niskiej jakości mogą negatywnie wpływać na wydajność. Jeśli wytrenujesz model na dużej ilości danych wewnętrznych, bez uprzedniego przycinania zestawu danych tylko do najwyższej jakości przykładów, możesz otrzymać model, który działa znacznie gorzej niż się spodziewano.
Prześlij swoje dane treningowe
Następnym krokiem jest wybranie istniejących przygotowanych danych treningowych lub wgranie nowych, które zostaną użyte do dostosowywania modelu. Po przygotowaniu danych treningowych możesz przekazać pliki do usługi. Istnieją dwa sposoby przekazywania danych treningowych:
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ć. Aby uzyskać więcej informacji na temat usługi Azure Blob Storage, zobacz Co to jest usługa Azure Blob Storage?
Uwaga / Notatka
Pliki danych treningowych muszą być sformatowane jako pliki JSONL zakodowane w formacie UTF-8 z znacznikiem kolejności bajtów (BOM). Rozmiar pliku musi być mniejszy niż 512 MB.
Poniższy przykład w języku Python przekazuje lokalne pliki szkoleniowe i weryfikacyjne przy użyciu zestawu SDK języka Python i pobiera zwrócone identyfikatory plików.
# Upload fine-tuning files
import os
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-10-21" # This API version or later is required to access seed/events/checkpoint capabilities
)
training_file_name = 'training_set.jsonl'
validation_file_name = 'validation_set.jsonl'
# Upload the training and validation dataset files to Azure OpenAI with the SDK.
training_response = client.files.create(
file=open(training_file_name, "rb"), purpose="fine-tune"
)
training_file_id = training_response.id
validation_response = client.files.create(
file=open(validation_file_name, "rb"), purpose="fine-tune"
)
validation_file_id = validation_response.id
print("Training file ID:", training_file_id)
print("Validation file ID:", validation_file_id)
Tworzenie dostosowanego modelu
Po przekazaniu plików szkoleniowych i weryfikacyjnych możesz rozpocząć zadanie dostosowywania.
Poniższy kod języka Python przedstawia przykład tworzenia nowego zadania dostrajania przy użyciu zestawu SDK języka Python:
W tym przykładzie przekazujemy również parametr ziarna. Nasiono kontroluje reproduktywność procesu. Przekazywanie tych samych parametrów nasion i zadania powinno generować te same wyniki, ale mogą się różnić w rzadkich przypadkach. Jeśli nasion nie zostanie określony, zostanie wygenerowany dla Ciebie.
response = client.fine_tuning.jobs.create(
training_file=training_file_id,
validation_file=validation_file_id,
model="gpt-4.1-2025-04-14", # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters.
seed = 105 # seed parameter controls reproducibility of the fine-tuning job. If no seed is specified one will be generated automatically.
)
job_id = response.id
# You can use the job ID to monitor the status of the fine-tuning job.
# The fine-tuning job will take some time to start and complete.
print("Job ID:", response.id)
print("Status:", response.id)
print(response.model_dump_json(indent=2))
Możesz również przekazać dodatkowe parametry opcjonalne, takie jak hiperparametry, aby przejąć większą kontrolę nad procesem dostrajania. W przypadku początkowego trenowania zalecamy użycie automatycznych wartości domyślnych, które są obecne bez określania tych parametrów.
Bieżące obsługiwane hiperparametry do dostrajania są następujące:
Nazwa | Typ | Opis |
---|---|---|
batch_size |
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, odkryliśmy, że większe rozmiary partii zwykle działają lepiej w przypadku większych zestawów danych. Wartość domyślna, a także 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 niższą wariancją. |
learning_rate_multiplier |
Liczba | Mnożnik szybkości nauki używany do trenowania. Współczynnik dostrajania uczenia to oryginalny współczynnik uczenia, który był używany do wstępnego trenowania, pomnożony 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. |
n_epochs |
liczba całkowita | Liczba epok treningu dla modelu. Epoka odnosi się do jednego pełnego cyklu przez zestaw danych szkoleniowych. |
seed |
liczba całkowita | Nasiono kontroluje reproduktywność procesu. Przekazywanie tych samych parametrów nasion i zadania powinno generować te same wyniki, ale mogą się różnić w rzadkich przypadkach. Jeśli nasion nie zostanie określony, zostanie wygenerowany dla Ciebie. |
Aby ustawić niestandardowe hiperparametry w wersji 1.x dla API OpenAI w języku Python:
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-10-21" # This API version or later is required
)
client.fine_tuning.jobs.create(
training_file="file-abc123",
model="gpt-4.1-2025-04-14", # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters.
hyperparameters={
"n_epochs":2
}
)
Sprawdzanie stanu zadania dostrajania
response = client.fine_tuning.jobs.retrieve(job_id)
print("Job ID:", response.id)
print("Status:", response.status)
print(response.model_dump_json(indent=2))
Lista zdarzeń dostrajania
Aby sprawdzić poszczególne zdarzenia dostrajania, które zostały wygenerowane podczas trenowania, może być konieczne uaktualnienie biblioteki klienta OpenAI do najnowszej wersji, uruchamiając to polecenie za pomocą pip install openai --upgrade
.
response = client.fine_tuning.jobs.list_events(fine_tuning_job_id=job_id, limit=10)
print(response.model_dump_json(indent=2))
Punkty kontrolne
Po zakończeniu każdej epoki trenowania generowany jest punkt kontrolny. Punkt kontrolny to w pełni funkcjonalna wersja modelu, która może być wdrożona i używana jako model docelowy dla kolejnych zadań dostrajania. Punkty kontrolne mogą być szczególnie przydatne, ponieważ mogą udostępniać migawki przed nadmiernym dopasowaniem. Po zakończeniu zadania dostrajania będziesz mieć trzy najnowsze wersje modelu dostępne do wdrożenia. Ostateczna epoka będzie reprezentowana przez dopasowany model, a poprzednie dwie epoki będą dostępne jako punkty kontrolne.
Możesz uruchomić polecenie listy punktów kontrolnych, aby pobrać listę punktów kontrolnych skojarzonych z indywidualnym zadaniem dostrajania. Aby uruchomić to polecenie, może być konieczne uaktualnienie biblioteki klienta openAI do najnowszej wersji pip install openai --upgrade
.
response = client.fine_tuning.jobs.checkpoints.list(job_id)
print(response.model_dump_json(indent=2))
Analizowanie dostosowanego modelu
Usługa Azure OpenAI dołącza plik wynikowy o nazwie results.csv do każdego zadania dostrajania po zakończeniu. Plik wyników umożliwia analizowanie wydajności trenowania i walidacji dostosowanego modelu. Identyfikator pliku wyników znajduje się na liście dla każdego dostosowanego modelu, a zestaw SDK języka Python umożliwia pobranie identyfikatora pliku i pobranie pliku wyników do analizy.
Poniższy przykład języka Python pobiera identyfikator pliku pierwszego pliku wynikowego dołączonego do zadania dostrajania dostosowanego modelu, a następnie używa zestawu SDK języka Python do pobrania pliku do bieżącego katalogu roboczego na potrzeby analizy.
# Retrieve the file ID of the first result file from the fine-tuning job
# for the customized model.
response = client.fine_tuning.jobs.retrieve(job_id)
if response.status == 'succeeded':
result_file_id = response.result_files[0]
retrieve = client.files.retrieve(result_file_id)
# Download the result file.
print(f'Downloading result file: {result_file_id}')
with open(retrieve.filename, "wb") as file:
result = client.files.content(result_file_id).read()
file.write(result)
Plik wyników jest plikiem CSV zawierającym wiersz nagłówka i wiersz dla każdego kroku trenowania wykonywanego przez zadanie dostrajania. Plik wyników zawiera następujące kolumny:
Nazwa kolumny | Opis |
---|---|
step |
Liczba kroków treningu. Etap treningowy reprezentuje pojedyncze przejście w przód i wstecz na partii danych treningowych. |
train_loss |
Utrata partii szkoleniowej. |
train_mean_token_accuracy |
Procent tokenów w partii szkoleniowej prawidłowo przewidywany przez model. Jeśli na przykład rozmiar partii jest ustawiony na 3, a dane zawierają uzupełnienia [[1, 2], [0, 5], [4, 2]] , ta wartość jest ustawiona na 0,83 (5 z 6), jeśli model przewidział [[1, 1], [0, 5], [4, 2]] . |
valid_loss |
Strata dla partii walidacyjnej. |
validation_mean_token_accuracy |
Procent tokenów w zbiorze walidacyjnym, które model prawidłowo przewidział. Jeśli na przykład rozmiar partii jest ustawiony na 3, a dane zawierają uzupełnienia [[1, 2], [0, 5], [4, 2]] , ta wartość jest ustawiona na 0,83 (5 z 6), jeśli model przewidział [[1, 1], [0, 5], [4, 2]] . |
full_valid_loss |
Utrata walidacji obliczona na końcu każdej epoki. Gdy trening idzie dobrze, utrata powinna się zmniejszyć. |
full_valid_mean_token_accuracy |
Prawidłowa dokładność tokenu średniego obliczona na końcu każdej epoki. Kiedy trening przebiega dobrze, precyzja tokenu powinna wzrosnąć. |
Dane można również wyświetlić w pliku results.csv jako wykresy w portalu usługi Azure AI Foundry. Wybierz link dla wytrenowanego modelu i zobaczysz trzy wykresy: strata, dokładność średnia tokenów i dokładność tokenów. Jeśli podano dane weryfikacji, oba zestawy danych będą wyświetlane na tym samym wykresie.
Oczekuj, że z czasem Twoje straty się zmniejszą, a dokładność wzrośnie. Jeśli widzisz rozbieżność między danymi treningowymi i walidacyjnymi, to może oznaczać nadmierne dopasowanie. Spróbuj trenować z mniejszą liczbą epok lub mniejszym mnożnikiem szybkości nauki.
Wdrożenie dopracowanego modelu
Gdy metryki z zadania dostrajania są zadowalające lub chcesz przejść do wnioskowania, musisz wdrożyć model.
Jeśli wdrażasz w celu dalszej weryfikacji, rozważ wdrożenie do testowania przy użyciu wdrożenia developerskiego.
W przeciwieństwie do poprzednich poleceń zestawu SDK wdrożenie musi odbywać się przy użyciu interfejsu API płaszczyzny sterowania, który wymaga oddzielnej autoryzacji, innej ścieżki interfejsu API i innej wersji interfejsu API.
zmienna | Definicja |
---|---|
kod przedpłaty | Istnieje wiele sposobów generowania tokenu autoryzacji. Najprostszą metodą testowania początkowego jest uruchomienie usługi Cloud Shell w witrynie Azure Portal. Następnie należy uruchomić polecenie az account get-access-token . Możesz użyć tego tokenu jako tymczasowego tokenu autoryzacji na potrzeby testowania interfejsu API. Zalecamy przechowywanie tej wartości w nowej zmiennej środowiskowej. |
abonament | Identyfikator subskrypcji skojarzonego zasobu usługi Azure OpenAI. |
grupa_zasobów | Nazwa grupy zasobów dla zasobu usługi Azure OpenAI. |
nazwa_zasobu | Nazwa zasobu usługi Azure OpenAI. |
nazwa_deploymentu_modelu | Niestandardowa nazwa dla nowego, zoptymalizowanego wdrożenia modelu. Jest to nazwa, która zostanie przywołynięta w kodzie podczas wykonywania wywołań ukończenia czatu. |
model dostrojony | Pobierz tę wartość z wyników zadania dostrajania w poprzednim kroku. Będzie ona wyglądać następująco: gpt-4.1-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83 . Musisz dodać wartość do pliku json deploy_data. Alternatywnie można wdrożyć punkt kontrolny, przekazując identyfikator punktu kontrolnego, który będzie wyświetlany w formacie ftchkpt-e559c011ecc04fc68eaa339d8227d02d |
import json
import os
import requests
token= os.getenv("<TOKEN>")
subscription = "<YOUR_SUBSCRIPTION_ID>"
resource_group = "<YOUR_RESOURCE_GROUP_NAME>"
resource_name = "<YOUR_AZURE_OPENAI_RESOURCE_NAME>"
model_deployment_name ="gpt-41-ft" # custom deployment name that you will use to reference the model when making inference calls.
deploy_params = {'api-version': "2024-10-01"} # control plane API version rather than dataplane API for this call
deploy_headers = {'Authorization': 'Bearer {}'.format(token), 'Content-Type': 'application/json'}
deploy_data = {
"sku": {"name": "standard", "capacity": 1},
"properties": {
"model": {
"format": "OpenAI",
"name": <"fine_tuned_model">, #retrieve this value from the previous call, it will look like gpt-4.1-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83
"version": "1"
}
}
}
deploy_data = json.dumps(deploy_data)
request_url = f'https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.CognitiveServices/accounts/{resource_name}/deployments/{model_deployment_name}'
print('Creating a new deployment...')
r = requests.put(request_url, params=deploy_params, headers=deploy_headers, data=deploy_data)
print(r)
print(r.reason)
print(r.json())
Dowiedz się więcej na temat wdrażania między regionami i skorzystaj z wdrożonego modelu tutaj.
Jeśli wszystko jest gotowe do wdrożenia w środowisku produkcyjnym lub masz określone potrzeby dotyczące rezydencji danych, postępuj zgodnie z naszym przewodnikiem wdrażania.
Ciągłe dostrajanie
Po utworzeniu dostosowanego modelu możesz nadal udoskonalić model w czasie poprzez dalsze dostrajanie. Ciągłe dostrajanie jest procesem iteracyjnym wybierania już dostrojonego modelu jako modelu podstawowego i dostrajania go dalej w nowych zestawach przykładów szkoleniowych.
Aby wykonać precyzyjne dostrajanie modelu, który został wcześniej dostosowany, należy użyć tego samego procesu, jak opisano w artykule tworzenia dostosowanego modelu, ale zamiast określać nazwę ogólnego modelu podstawowego, należy określić identyfikator już dostosowanego modelu. Identyfikator dostosowanego modelu wygląda następująco: gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-10-21"
)
response = client.fine_tuning.jobs.create(
training_file=training_file_id,
validation_file=validation_file_id,
model="gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7"
)
job_id = response.id
# You can use the job ID to monitor the status of the fine-tuning job.
# The fine-tuning job will take some time to start and complete.
print("Job ID:", response.id)
print("Status:", response.id)
print(response.model_dump_json(indent=2))
Również zalecamy uwzględnienie parametru suffix
, aby ułatwić rozróżnienie różnych iteracji dostrojonego modelu.
suffix
pobiera ciąg znaków i jest używany do identyfikacji dostrojonego modelu. W interfejsie API języka Python OpenAI obsługiwany jest ciąg zawierający maksymalnie 18 znaków, który zostanie dodany do spersonalizowanej nazwy modelu.
Jeśli nie masz pewności co do identyfikatora istniejącego dostosowanego modelu, te informacje można znaleźć na stronie Modele rozwiązania Azure AI Foundry lub wygenerować listę modeli dla danego zasobu usługi Azure OpenAI przy użyciu interfejsu API REST.
Czyszczenie wdrożeń, dostosowanych modeli i plików szkoleniowych
Po zakończeniu pracy z dostosowanym modelem możesz usunąć wdrożenie i model. W razie potrzeby możesz również usunąć pliki szkoleniowe i weryfikacyjne przekazane do usługi.
Usuń wdrożenie modelu
Ważne
Po wdrożeniu dostosowanego modelu, jeśli w dowolnym momencie wdrożenie pozostanie nieaktywne przez ponad piętnaście (15) dni, wdrożenie zostanie usunięte. Wdrożenie dostosowanego modelu jest nieaktywne, jeśli model został wdrożony ponad piętnaście (15) dni temu i nie wykonano do niego żadnych wywołań ani ukończeń czatu w ciągu nieprzerwanego 15-dniowego okresu.
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 modeli w Azure OpenAI in Azure AI Foundry, każdy precyzyjnie dostosowany model, który został wdrożony, powoduje naliczanie godzinowego kosztu hostingu, niezależnie od tego, czy są wykonywane połączenia w celu ukończenia operacji lub czatu do modelu. Aby dowiedzieć się więcej na temat planowania kosztów i zarządzania nimi za pomocą usługi Azure OpenAI, zapoznaj się ze wskazówkami w artykule Planowanie zarządzania kosztami usługi Azure OpenAI.
Aby usunąć wdrożenie dostosowanego modelu, możesz użyć różnych metod:
Usuń twój dostosowany model
Podobnie możesz użyć różnych metod do usunięcia dostosowanego modelu:
Uwaga / Notatka
Nie można usunąć dostosowanego modelu, jeśli ma istniejące wdrożenie. Najpierw musisz usunąć wdrożenie swojego modelu, zanim będziesz mógł usunąć swój dostosowany model.
Usuwanie plików szkoleniowych
Opcjonalnie możesz usunąć pliki szkoleniowe i weryfikacyjne przekazane na potrzeby trenowania oraz pliki wyników wygenerowane podczas trenowania z subskrypcji usługi Azure OpenAI. Możesz użyć następujących metod, aby usunąć pliki trenowania, walidacji i wyników:
- Azure AI Foundry
- Interfejsy API REST
- Zestaw SDK języka Python
W poniższym przykładzie języka Python użyto zestawu SDK języka Python do usunięcia plików trenowania, walidacji i wyników dla dostosowanego modelu:
print('Checking for existing uploaded files.')
results = []
# Get the complete list of uploaded files in our subscription.
files = openai.File.list().data
print(f'Found {len(files)} total uploaded files in the subscription.')
# Enumerate all uploaded files, extracting the file IDs for the
# files with file names that match your training dataset file and
# validation dataset file names.
for item in files:
if item["filename"] in [training_file_name, validation_file_name, result_file_name]:
results.append(item["id"])
print(f'Found {len(results)} already uploaded files that match our files')
# Enumerate the file IDs for our files and delete each file.
print(f'Deleting already uploaded files.')
for id in results:
openai.File.delete(sid = id)
Wymagania wstępne
- Przeczytaj przewodnik dotyczący dostrajania Azure OpenAI .
- Subskrypcja platformy Azure. Utwórz je bezpłatnie.
- Zasób usługi Azure OpenAI. Aby uzyskać więcej informacji, zobacz Tworzenie zasobu i wdrażanie modelu za pomocą usługi Azure OpenAI.
- Dostrajanie dostępu wymaga kontrybutora usług Cognitive Services OpenAI.
- Jeśli nie masz jeszcze dostępu do wyświetlania limitu przydziału i wdrażania modeli w portalu usługi Azure AI Foundry, musisz mieć dodatkowe uprawnienia.
Uwaga / Notatka
Interfejs API REST nie obsługuje obecnie globalnych zadań szkoleniowych. Inspekcja globalnych zadań szkoleniowych za pośrednictwem interfejsu API może zwracać nieprawidłowe informacje.
Obsługiwane modele
Sprawdź stronę modeli, aby sprawdzić, które regiony obecnie obsługują dostrajanie.
Lub możesz dostosować wcześniej dostrojony model, sformatowany jako base-model.ft-{jobid}.
Przejrzyj przepływ pracy dla interfejsu API REST
Pośmiń chwilę na przejrzenie przepływu pracy dostrajania na potrzeby korzystania z interfejsów API REST i języka Python z usługą Azure OpenAI:
- Przygotuj dane szkoleniowe i weryfikacyjne.
- Wybierz model podstawowy.
- Przekaż dane szkoleniowe.
- Wytrenuj swój nowy dostosowany model.
- Sprawdź stan dostosowanego modelu.
- Wdróż dostosowany model do użycia.
- Użyj dostosowanego modelu.
- Opcjonalnie przeanalizuj dostosowany model pod kątem wydajności i dopasowania.
Przygotowywanie danych treningowych i weryfikacyjnych
Dane szkoleniowe i zestawy danych do walidacji składają się z przykładów wejściowych i wyjściowych pokazujących, jak ma działać model.
Używane dane szkoleniowe i weryfikacyjne muszą być sformatowane jako dokument JSON Lines (JSONL) i muszą mieć format konwersacyjny używany przez interfejs API Chat Completions.
Jeśli chcesz zapoznać się z przewodnikiem krok po kroku dotyczącym dostrajania, gpt-4o-mini-2024-07-18
zapoznaj się z samouczkiem dostrajania usługi Azure OpenAI.
Przykładowy format pliku
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who discovered Antarctica?"}, {"role": "assistant", "content": "Some chaps named Fabian Gottlieb von Bellingshausen and Mikhail Lazarev, as if they don't teach that in every school!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the biggest ocean?"}, {"role": "assistant", "content": "The Pacific Ocean. It's not like it's a small pond or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest planet?"}, {"role": "assistant", "content": "It's called Jupiter, you might have heard of it...or not."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who painted the Mona Lisa?"}, {"role": "assistant", "content": "Oh, some obscure artist named Leonardo da Vinci. Not that he is famous or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the boiling point of water?"}, {"role": "assistant", "content": "Exciting fact of the day: it's 100 degrees Celsius. Life-changing, isn't it?"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'The Odyssey'?"}, {"role": "assistant", "content": "Oh, just some poet named Homer. Nothing special, really."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest mammal?"}, {"role": "assistant", "content": "Blue Whale. Quite a big fish isn't it? Oh wait, it's not a fish!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the highest mountain peak?"}, {"role": "assistant", "content": "Everest. Brace yourself, it's not a walk in the park."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who invented the telephone?"}, {"role": "assistant", "content": "A guy named Alexander Graham Bell. Bet you didn't guess that one!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the distance from Earth to the Sun?"}, {"role": "assistant", "content": "About 93 million miles. Just a quick drive, really."}]}
Format pliku czatu z wieloma zakrętami
Obsługiwane jest również wiele kolei konwersacji w jednym wierszu pliku szkoleniowego jsonl. Aby pominąć precyzyjne dostosowywanie określonych komunikatów asystenta, dodaj opcjonalną parę wartości klucza weight
. Obecnie weight
można ustawić wartość 0 lub 1.
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}
Ukończenia rozmów z użyciem wizji
{"messages": [{"role": "user", "content": [{"type": "text", "text": "What's in this image?"}, {"type": "image_url", "image_url": {"url": "https://raw.githubusercontent.com/MicrosoftDocs/azure-ai-docs/main/articles/ai-services/openai/media/how-to/generated-seattle.png"}}]}, {"role": "assistant", "content": "The image appears to be a watercolor painting of a city skyline, featuring tall buildings and a recognizable structure often associated with Seattle, like the Space Needle. The artwork uses soft colors and brushstrokes to create a somewhat abstract and artistic representation of the cityscape."}]}
Oprócz formatu JSONL pliki danych trenowania i walidacji muszą być zakodowane w formacie UTF-8 i zawierać znak porządku bajtów (BOM). Rozmiar pliku musi być mniejszy niż 512 MB.
Tworzenie zestawów danych trenowania i walidacji
Tym więcej przykładów treningowych, tym lepiej. Zadania dostrajania nie będą kontynuowane bez co najmniej 10 przykładów treningowych, ale taka mała liczba nie wystarczy, aby zauważalnie wpłynąć na odpowiedzi modelu. Najlepszym rozwiązaniem jest zapewnienie setek, jeśli nie tysięcy, przykładów szkoleniowych, które mają być skuteczne.
Ogólnie rzecz biorąc, podwojenie rozmiaru zestawu danych może prowadzić do liniowego wzrostu jakości modelu. Należy jednak pamiętać, że przykłady niskiej jakości mogą negatywnie wpływać na wydajność. Jeśli wytrenujesz model na dużej ilości danych wewnętrznych bez uprzedniego przycinania zestawu danych tylko pod kątem najwyższej jakości przykładów, możesz utworzyć model, który działa znacznie gorzej niż oczekiwano.
Prześlij swoje dane treningowe
Następnym krokiem jest wybranie istniejących przygotowanych danych treningowych lub przekazanie nowych przygotowanych danych treningowych do użycia podczas dostosowywania modelu. Po przygotowaniu danych treningowych możesz przekazać pliki do usługi. Istnieją dwa sposoby przekazywania danych treningowych:
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ć. Aby uzyskać więcej informacji na temat usługi Azure Blob Storage, zobacz Co to jest usługa Azure Blob Storage?
Uwaga / Notatka
Pliki danych treningowych muszą być sformatowane jako pliki JSONL zakodowane w formacie UTF-8 z znacznikiem kolejności bajtów (BOM). Rozmiar pliku musi być mniejszy niż 512 MB.
Przekazywanie danych treningowych
curl -X POST $AZURE_OPENAI_ENDPOINT/openai/files?api-version=2023-12-01-preview \
-H "Content-Type: multipart/form-data" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-F "purpose=fine-tune" \
-F "file=@C:\\fine-tuning\\training_set.jsonl;type=application/json"
Przekazywanie danych weryfikacji
curl -X POST $AZURE_OPENAI_ENDPOINT/openai/files?api-version=2023-12-01-preview \
-H "Content-Type: multipart/form-data" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-F "purpose=fine-tune" \
-F "file=@C:\\fine-tuning\\validation_set.jsonl;type=application/json"
Tworzenie dostosowanego modelu
Po przesłaniu plików szkoleniowych i walidacyjnych jesteś gotowy, aby rozpocząć proces fine-tuningu. Poniższy kod przedstawia przykład tworzenia nowego zadania dostrajania za pomocą interfejsu API REST.
W tym przykładzie przekazujemy również parametr ziarna. Nasiono kontroluje reproduktywność procesu. Podanie tych samych parametrów ziarna i zadania powinno dawać te same wyniki, ale mogą się różnić w rzadkich przypadkach. Jeśli ziarno nie zostanie określone, zostanie wygenerowane dla Ciebie.
curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs?api-version=2024-10-21 \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1-2025-04-14",
"training_file": "<TRAINING_FILE_ID>",
"validation_file": "<VALIDATION_FILE_ID>",
"seed": 105
}'
Możesz również przekazać dodatkowe parametry opcjonalne, takie jak hiperparametry , aby przejąć większą kontrolę nad procesem dostrajania. W przypadku początkowego trenowania zalecamy użycie automatycznych wartości domyślnych, które są obecne bez określania tych parametrów.
Bieżące obsługiwane hiperparametry do dostrajania są następujące:
Nazwa | Typ | Opis |
---|---|---|
batch_size |
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, odkryliśmy, że większe rozmiary partii zwykle działają lepiej w przypadku większych zestawów danych. Wartość domyślna, a także 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 niższą wariancją. |
learning_rate_multiplier |
Liczba | Mnożnik szybkości nauki używany do trenowania. Współczynnik dostrajania uczenia to oryginalny współczynnik uczenia, który był używany do wstępnego trenowania, pomnożony 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. |
n_epochs |
liczba całkowita | Liczba epok treningu dla modelu. Epoka odnosi się do jednego pełnego cyklu przez zestaw danych szkoleniowych. |
seed |
liczba całkowita | Nasiono kontroluje reproduktywność procesu. Przekazywanie tych samych parametrów nasion i zadania powinno generować te same wyniki, ale mogą się różnić w rzadkich przypadkach. Jeśli nasion nie zostanie określony, zostanie wygenerowany dla Ciebie. |
Sprawdzanie stanu dostosowanego modelu
Po rozpoczęciu zadania dostrajania jego ukończenie może zająć trochę czasu. Zadanie może być kolejkowane za innymi zadaniami w systemie. Trenowanie modelu może potrwać kilka minut lub godzin w zależności od rozmiaru modelu i zestawu danych. W poniższym przykładzie użyto interfejsu API REST do sprawdzenia stanu zadania dostrajania. Przykład pobiera informacje o zadaniu przy użyciu identyfikatora zadania zwróconego z poprzedniego przykładu:
curl -X GET $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/<YOUR-JOB-ID>?api-version=2024-10-21 \
-H "api-key: $AZURE_OPENAI_API_KEY"
Lista zdarzeń dostrajania
Aby zbadać poszczególne zdarzenia dostrajania, które zostały wygenerowane podczas trenowania:
curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/{fine_tuning_job_id}/events?api-version=2024-10-21 \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
Punkty kontrolne
Po zakończeniu każdej epoki trenowania generowany jest punkt kontrolny. Punkt kontrolny to w pełni funkcjonalna wersja modelu, która może być wdrożona i używana jako model docelowy dla kolejnych zadań dostrajania. Punkty kontrolne mogą być szczególnie przydatne, ponieważ mogą udostępniać migawki przed nadmiernym dopasowaniem. Po zakończeniu zadania dostrajania będziesz mieć trzy najnowsze wersje modelu dostępne do wdrożenia. Ostateczna epoka będzie reprezentowana przez dopasowany model, a poprzednie dwie epoki będą dostępne jako punkty kontrolne.
Możesz uruchomić polecenie listy punktów kontrolnych, aby pobrać listę punktów kontrolnych skojarzonych z indywidualnym zadaniem dostrajania:
curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints?api-version=2024-10-21 \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
Analizowanie dostosowanego modelu
Usługa Azure OpenAI dołącza plik wynikowy o nazwie results.csv do każdego zadania dostrajania po zakończeniu. Plik wyników umożliwia analizowanie wydajności trenowania i walidacji dostosowanego modelu. Identyfikator pliku dla pliku wyników znajduje się na liście dla każdego dostosowanego modelu i możesz użyć interfejsu API REST, aby pobrać identyfikator pliku i pobrać plik wynikowy do analizy.
Poniższy przykład w języku Python używa interfejsu API REST do pobrania identyfikatora pliku pierwszego pliku wynikowego dołączonego do zadania dostrajania dostosowanego modelu, a następnie pobrania pliku do katalogu roboczego na potrzeby analizy.
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/<JOB_ID>?api-version=2023-12-01-preview" \
-H "api-key: $AZURE_OPENAI_API_KEY")
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/files/<RESULT_FILE_ID>/content?api-version=2023-12-01-preview" \
-H "api-key: $AZURE_OPENAI_API_KEY" > <RESULT_FILENAME>
Plik wyników jest plikiem CSV zawierającym wiersz nagłówka i wiersz dla każdego kroku trenowania wykonywanego przez zadanie dostrajania. Plik wyników zawiera następujące kolumny:
Nazwa kolumny | Opis |
---|---|
step |
Liczba kroków treningu. Etap treningowy reprezentuje pojedyncze przejście w przód i wstecz na partii danych treningowych. |
train_loss |
Utrata partii szkoleniowej. |
train_mean_token_accuracy |
Procent tokenów w partii szkoleniowej prawidłowo przewidywany przez model. Jeśli na przykład rozmiar partii jest ustawiony na 3, a dane zawierają uzupełnienia [[1, 2], [0, 5], [4, 2]] , ta wartość jest ustawiona na 0,83 (5 z 6), jeśli model przewidział [[1, 1], [0, 5], [4, 2]] . |
valid_loss |
Strata dla partii walidacyjnej. |
validation_mean_token_accuracy |
Procent tokenów w zbiorze walidacyjnym, które model prawidłowo przewidział. Jeśli na przykład rozmiar partii jest ustawiony na 3, a dane zawierają uzupełnienia [[1, 2], [0, 5], [4, 2]] , ta wartość jest ustawiona na 0,83 (5 z 6), jeśli model przewidział [[1, 1], [0, 5], [4, 2]] . |
full_valid_loss |
Utrata walidacji obliczona na końcu każdej epoki. Gdy trening idzie dobrze, utrata powinna się zmniejszyć. |
full_valid_mean_token_accuracy |
Prawidłowa dokładność tokenu średniego obliczona na końcu każdej epoki. Kiedy trening przebiega dobrze, precyzja tokenu powinna wzrosnąć. |
Dane można również wyświetlić w pliku results.csv jako wykresy w portalu usługi Azure AI Foundry. Wybierz link dla wytrenowanego modelu i zobaczysz trzy wykresy: strata, dokładność średnia tokenów i dokładność tokenów. Jeśli podano dane weryfikacji, oba zestawy danych będą wyświetlane na tym samym wykresie.
Oczekuj, że z czasem Twoje straty się zmniejszą, a dokładność wzrośnie. Jeśli widzisz rozbieżność między danymi z treningu a walidacji, może to wskazywać na nadmierne dopasowanie. Spróbuj trenować z mniejszą liczbą epok lub mniejszym mnożnikiem szybkości nauki.
Wdrożenie dopracowanego modelu
Gdy metryki z zadania dostrajania są zadowalające lub chcesz przejść do wnioskowania, musisz wdrożyć model.
Jeśli wdrażasz w celu dalszej weryfikacji, rozważ wdrożenie do testowania przy użyciu wdrożenia developerskiego.
Jeśli wszystko jest gotowe do wdrożenia w środowisku produkcyjnym lub masz określone potrzeby dotyczące rezydencji danych, postępuj zgodnie z naszym przewodnikiem wdrażania.
zmienna | Definicja |
---|---|
kod przedpłaty | Istnieje wiele sposobów generowania tokenu autoryzacji. Najprostszą metodą testowania początkowego jest uruchomienie usługi Cloud Shell w witrynie Azure Portal. Następnie należy uruchomić polecenie az account get-access-token . Możesz użyć tego tokenu jako tymczasowego tokenu autoryzacji na potrzeby testowania interfejsu API. Zalecamy przechowywanie tej wartości w nowej zmiennej środowiskowej. |
abonament | Identyfikator subskrypcji skojarzonego zasobu usługi Azure OpenAI. |
grupa_zasobów | Nazwa grupy zasobów dla zasobu usługi Azure OpenAI. |
nazwa_zasobu | Nazwa zasobu usługi Azure OpenAI. |
nazwa_deploymentu_modelu | Niestandardowa nazwa dla nowego, zoptymalizowanego wdrożenia modelu. Jest to nazwa, która zostanie przywołynięta w kodzie podczas wykonywania wywołań ukończenia czatu. |
model dostrojony | Pobierz tę wartość z wyników zadania dostrajania w poprzednim kroku. Będzie ona wyglądać następująco: gpt-4.1-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83 . Musisz dodać wartość do pliku json deploy_data. Alternatywnie można wdrożyć punkt kontrolny, przekazując identyfikator punktu kontrolnego, który będzie wyświetlany w formacie ftchkpt-e559c011ecc04fc68eaa339d8227d02d |
curl -X POST "https://management.azure.com/subscriptions/<SUBSCRIPTION>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.CognitiveServices/accounts/<RESOURCE_NAME>/deployments/<MODEL_DEPLOYMENT_NAME>api-version=2024-10-21" \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"sku": {"name": "standard", "capacity": 1},
"properties": {
"model": {
"format": "OpenAI",
"name": "<FINE_TUNED_MODEL>",
"version": "1"
}
}
}'
Dowiedz się więcej na temat wdrażania między regionami i skorzystaj z wdrożonego modelu tutaj.
Ciągłe dostrajanie
Po utworzeniu dostosowanego modelu może zajść potrzeba dalszego udoskonalania modelu z czasem poprzez dalsze dostrajanie. Ciągłe dostrajanie jest procesem iteracyjnym wybierania już dostrojonego modelu jako modelu podstawowego i dostrajania go dalej w nowych zestawach przykładów szkoleniowych.
Aby wykonać precyzyjne dostrajanie modelu, który został wcześniej dostosowany, należy użyć tego samego procesu, jak opisano w artykule tworzenie dostosowanego modelu, ale zamiast określać nazwę ogólnego modelu podstawowego, należy określić identyfikator już dostosowanego modelu. Identyfikator dostosowanego modelu wygląda następująco: gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7
curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs?api-version=2023-12-01-preview \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7",
"training_file": "<TRAINING_FILE_ID>",
"validation_file": "<VALIDATION_FILE_ID>",
"suffix": "<additional text used to help identify fine-tuned models>"
}'
Również zalecamy uwzględnienie parametru suffix
, aby ułatwić rozróżnienie różnych iteracji dostrojonego modelu.
suffix
pobiera ciąg znaków i jest używany do identyfikacji dostrojonego modelu. Sufiks może zawierać maksymalnie 40 znaków (a-z, A-Z, 0-9, - i _), które zostaną dodane do dostosowanej nazwy modelu.
Jeśli nie masz pewności co do identyfikatora dostosowanego modelu, te informacje można znaleźć na stronie Modele rozwiązania Azure AI Foundry lub wygenerować listę modeli dla danego zasobu usługi Azure OpenAI przy użyciu interfejsu API REST.
Czyszczenie wdrożeń, dostosowanych modeli i plików szkoleniowych
Po zakończeniu pracy z dostosowanym modelem możesz usunąć wdrożenie i model. W razie potrzeby możesz również usunąć pliki szkoleniowe i weryfikacyjne przekazane do usługi.
Usuń wdrożenie modelu
Aby usunąć wdrożenie dostosowanego modelu, możesz użyć różnych metod:
Usuń twój dostosowany model
Podobnie możesz użyć różnych metod do usunięcia dostosowanego modelu:
Uwaga / Notatka
Nie można usunąć dostosowanego modelu, jeśli ma istniejące wdrożenie. Najpierw musisz usunąć wdrożenie swojego modelu, zanim będziesz mógł usunąć swój dostosowany model.
Usuwanie plików szkoleniowych
Opcjonalnie możesz usunąć pliki szkoleniowe i weryfikacyjne przekazane na potrzeby trenowania oraz pliki wyników wygenerowane podczas trenowania z subskrypcji usługi Azure OpenAI. Możesz użyć następujących metod, aby usunąć pliki trenowania, walidacji i wyników:
Dalsze kroki
- Zapoznaj się z możliwościami dostrajania w samouczku dostrajania usługi Azure OpenAI.
- Przegląd dostępności regionalnej modelu dostosowanego
- Dowiedz się więcej o limitach przydziałów usługi Azure OpenAI