Megosztás:


Egy modell testreszabása finomhangolással

Megtudhatja, hogyan finomíthat modelleket a Microsoft Foundryben az adathalmazokhoz és a használati esetekhez. A finomhangolás a következőket teszi lehetővé:

  • Jobb minőségű eredmények, mint amit csak a gyors tervezésből kaphat.
  • Több példát is betaníthat, mint ami belefér a modell kéréskörnyezeti korlátjába.
  • Rövidebb kérdések miatti token megtakarítás.
  • Alacsonyabb késleltetésű kérések, különösen kisebb modellek használata esetén.

A kevés példás tanulással ellentétben a finomhangolás a modell továbbfejlesztése érdekében több példákon történő továbbképzést alkalmaz, mint ami egy bemeneti utasításba belefér. Mivel a súlyok alkalmazkodnak a feladathoz, kevesebb példát vagy utasítást kell megadnia. Kevesebb token használata hívásonként csökkentheti a költségeket és a késleltetést.

Alacsony szintű adaptációt (LoRA) használunk a modellek finomhangolásához oly módon, hogy az jelentősen ne befolyásolja a teljesítményüket. Ez a módszer úgy működik, hogy az eredeti magas rangsorú mátrixot egy alacsonyabb ranggal közelíti meg. A felügyelt betanítási fázisban a fontos paraméterek kisebb részhalmazának finomhangolásával kezelhetőbbé és hatékonyabbá válik a modell. A felhasználók számára is gyorsabb és megfizethetőbbé teszi a képzést, mint más technikákat.

Ebből a cikkből megtudhatja, hogyan:

  • A finomhangoláshoz válassza ki a megfelelő adatkészleteket és formátumokat.
  • Finomhangolási feladat elindítása, állapot figyelése és eredmények lekérése.
  • Egy finomhangolt modell üzembe helyezése és kiértékelése.
  • Törölje az erőforrásokat, ha már nincs rájuk szüksége.

Előfeltételek

Támogatott modellek

Annak ellenőrzéséhez, hogy mely régiók támogatják jelenleg a finomhangolást, tekintse meg a modellekről szóló cikket.

Vagy finomhangolhat egy korábban finomhangolt modellt, amely a következő formátumban van: base-model.ft-{jobid}.

Az adatok előkészítése

A betanítási és érvényesítési adatkészletek bemeneti és kimeneti példákból állnak, amelyekből megtudhatja, hogyan szeretné végrehajtani a modellt.

A használt betanítási és érvényesítési adatokat JSON Lines (JSONL) dokumentumként kell formázni. A Csevegés befejezése API által használt beszélgetési formátumot is meg kell formázni.

A JSONL formátumon kívül a betanítási és érvényesítési adatfájlokat UTF-8-ban kell kódolni, és tartalmaznia kell egy bájtsorrendjelet (BOM). Minden fájlnak 512 MB-nál kisebb méretűnek kell lennie.

Javasoljuk, hogy minden egyes betanítási példában a legjobban bevált utasításokat és feladatokat használja. Ez a megközelítés segít a legjobb eredmények eléréséhez, különösen ha száznál kevesebb példa van.

Ha még nem készített elő egy meglévő adatkészletet, az adatgenerálási képességekkel létrehozhat egy újat.

Példa fájlformátumra

{"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."}]}

Többfordulós beszélgetési fájlformátum

A JSONL-betanítási fájl egyetlen sorában több beszélgetés is támogatott. Ha nem szeretne finomhangolni bizonyos segédüzeneteken, adja hozzá az opcionális weight kulcs-érték párot. Jelenleg a következőre állítható be: weight0 vagy 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the biggest city in 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}]}

Csevegés befejezése vizuális képességgel

{"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."}]}

Az adathalmaz méretének szempontjai

Minél több betanítási példa van, annál jobb. A finomhangolási feladatok nem folytatódnak legalább 10 betanítási példa nélkül, de ez a kis szám nem elegendő a modellválaszok észrevehető befolyásolásához. A sikeres finomhangolás ajánlott eljárása több száz, ha nem ezres számú betanítási példa biztosítása. Javasoljuk, hogy 50 jól kidolgozott példával kezdje.

Általánosságban elmondható, hogy az adathalmaz méretének megduplázása lineáris modellminőség-növekedéshez vezethet. Ne feledje azonban, hogy az alacsony minőségű példák negatív hatással lehetnek a teljesítményre. Ha nagy mennyiségű belső adaton tanítja be a modellt anélkül, hogy először kiszűrné csak a legmagasabb minőségű példákat, a modell a vártnál rosszabb teljesítményt érhet el.

A finomhangolt modell létrehozása

Ha egy modellt egy meglévő Foundry-projektben szeretne finomhangolni, kövesse az alábbi lépéseket:

  1. Jelentkezzen be a Foundrybe , és válassza ki a projektet. Ha még nem rendelkezik projektel, először hozzon létre egy projektet.

  2. Lépjen a Build>Fine-tune (Finomhangolás ) lapra, majd válassza a jobb felső sarokban található Finomhangolás gombot.

  3. Most már látnia kell a modell finomhangolását egy új finomhangolási feladat létrehozásához. Az alábbi szakaszok segítségével konfigurálhatja a feladatot, majd a Küldés gombra kattintva megkezdheti az új, finomhangolt modell betanítását.

Alapmodell kiválasztása

A projektrégió korlátozhatja az elérhető modelleket. A modell kiválasztása befolyásolja a modell teljesítményét és költségeit is.

Választhat egy korábban finomhangolt modellt is.

Testreszabási módszer

A támogatott testreszabási módszerek a kiválasztott modelltől függenek:

  • Felügyelt finomhangolás (SFT):: A modell betanítása címkézett bemeneti/kimeneti párokra. A legtöbb forgatókönyv esetében a legjobb, beleértve a feladat specializációt is.

  • Közvetlen preferenciális optimalizálás (DPO): A modellt az ember által előnyben részesített válaszokhoz igazítja. Ideális a válaszminőség javításához.

  • Megerősítés finomhangolása (RFT):A modell osztályozóitól kapott jutalomjelekkel optimalizálja az összetett viselkedéseket.

Megjegyzés:

A cikk további része az SFT-metódus lépéseit ismerteti. Az egyéb testreszabási módszerekre vonatkozó utasításokért tekintse meg a DPO útmutatójában és az RFT útmutatójában.

Betanítás típusa

Válassza ki a képzési szintet a használati eset és a költségvetés alapján:

  • Standard: A betanítás az aktuális Foundry-erőforrás régiójában történik, és garantálja az adatok tárolását. Ideális olyan számítási feladatokhoz, ahol az adatoknak egy adott régióban kell maradniuk.

  • Globális: A Standardhoz képest megfizethetőbb díjszabást biztosít a jelenlegi régión túli kapacitás használatával. A rendszer az adatokat és a súlyokat arra a régióra másolja, ahol a betanítás történik. Ideális, ha az adatlakóhely nem korlátozás, vagy gyorsabb sorba állítási időket szeretne.

  • Fejlesztő (előzetes verzió): Jelentős költségmegtakarítást biztosít a kihasználatlan kapacitás képzésre való használatával. Nincs késési vagy SLA-garancia, ezért előfordulhat, hogy az ebben a rétegben lévő feladatok automatikusan elő vannak állítva, és később újraindulnak. Az adatmegőrzési helyre sincs garancia. Ideális kísérletezéshez és árérzékeny számítási feladatokhoz.

Betanítási és érvényesítési adatok

Ha már rendelkezik meglévő adatkészletekkel az Foundry-projektben, válassza a Meglévő adathalmazadatforráshoz lehetőséget, majd válassza ki az adathalmazt.

Újonnan előkészített adathalmazok feltöltéséhez válassza az Új adatkészlet feltöltéseadatforráshoz lehetőséget, majd töltse fel a JSONL-fájlt.

Az adatfájlok kiválasztása vagy feltöltése után az ellenőrzési ellenőrzések automatikusan ellenőrzik, hogy a fájlok JSONL formátumban vannak-e formázva, UTF-8-ban vannak kódolva egy anyagjegyzékkel, és 512 MB-nál kisebb méretűek.

Választható paraméterek

Toldalék

Javasoljuk, hogy adjon meg egy utótagértéket , hogy könnyebb legyen megkülönböztetni a finomhangolt modell különböző iterációit. Az utótag vesz fel egy legfeljebb 18 karakter hosszúságú karakterláncot, és az így kapott finomhangolt modell elnevezésére használják.

Seed

Egy mag szabályozza a feladat reprodukálhatóságát. Az azonos vetőmag- és feladatparaméterek átadása ugyanazokat az eredményeket eredményezi, de ritka esetekben eltérhet. Ha nem ad meg magot, a rendszer véletlenszerűen generál egy magot.

Hiperparaméterek

A hiperparamétereket manuálisan konfigurálhatja a finomhangolási feladathoz, vagy alapértelmezettként hagyhatja őket.

A következő hiperparaméterek érhetők el:

Név Típus Leírás
batch_size Egész szám A betanításhoz használandó csoportméret. A batch mérete azoknak a betanítási példáknak a száma, amelyeket egyetlen előre- és hátrameneti lépés során használnak fel a tanításhoz. Általánosságban elmondható, hogy a nagyobb kötegméretek általában jobban működnek a nagyobb adathalmazok esetében.

A tulajdonság alapértelmezett értéke és maximális értéke egy alapmodellre vonatkozik. A nagyobb kötegméret azt jelenti, hogy a modellparaméterek ritkábban, de alacsonyabb varianciával frissülnek. Amikor az érték -1-re van állítva, a köteg méretét a tanuló készlet példányainak 0,2%-aként számítjuk ki. A maximális érték .256
learning_rate_multiplier Szám A betanításhoz használandó tanulási sebesség szorzója. A finomhangolási tanulási ráta az előzetes betanításhoz használt eredeti tanulási ráta, ezzel az értékkel szorozva.

A nagyobb tanulási sebességek általában jobban teljesítenek a nagyobb batchméretekkel. Javasoljuk, hogy kísérletezzen 0.02 és 0.2 közötti értékekkel, hogy lássa, mi hozza a legjobb eredményt. A túlillesztés elkerülése érdekében hasznos lehet a kisebb tanulási arány.
n_epochs Egész szám A modell betanításához szükséges epochák száma. A korszak egy teljes ciklusra utal a betanítási adathalmazon keresztül. Ha az érték be van állítva -1, a rendszer dinamikusan határozza meg a korszakok számát a bemeneti adatok alapján.

Automatikus üzembe helyezés

Fontos

Az automatikus üzembe helyezéshez szüksége lesz az Azure AI-tulajdonosi szerepkörre vagy a Microsoft.CognitiveServices/accounts/deployments/write művelethez tartozó bármely szerepkörre.

Időt takaríthat meg, ha engedélyezi az automatikus üzembe helyezést az eredményként kapott modellhez. Ha a betanítás sikeresen befejeződik, a modell a kiválasztott üzembe helyezési típusnak megfelelően lesz üzembe helyezve. A telepítés neve az egyéni modelledhez létrehozott egyedi néven és az általad korábban megadott opcionális utótagon alapul.

Az automatikus üzembe helyezés csak OpenAI-modellek esetén támogatott.

Az eredmények monitorozása és elemzése

A finomhangolási feladat elküldése után egy táblázatnézet felsorolja az összes finomhangoló feladatbeküldést. Ha további információt szeretne látni az egyes eredményekről, nyissa meg a Feladat részletei lapot.

Előfordulhat, hogy a feladat várólistára kerül a rendszerben lévő többi feladat mögött. A modell betanítása a modelltől és az adathalmaz méretétől függően percekig és órákig is eltarthat.

Mértékek

A Monitor fül megnyitásával megfigyelheti a következő metrikákat:

  • train_loss: A betanítási köteg vesztesége. Az x tengely minden egyes betanítási lépése egy betanítási adatköteg egyetlen áthaladását, előre- és hátralépését jelöli.

  • full_valid_loss: Az egyes korszakok végén kiszámított érvényesítési veszteség. Ha a betanítás jól megy, a veszteségnek csökkennie kell.

  • train_mean_token_accuracy: A modell által helyesen előrejelzett tokenek százalékos aránya a betanítási kötegben.

    Például, ha a köteg mérete 3 értékre van állítva, és az adatok befejezéseket [[1, 2], [0, 5], [4, 2]] tartalmaznak, akkor ez az érték 0.83 (6 közül 5) értékre van beállítva, ha a modell [[1, 1], [0, 5], [4, 2]]-t előrejelzi.

  • full_valid_mean_token_accuracy: Az egyes epochok végén kiszámított valós átlagos token pontosság. Ha a tréning jól halad, a token pontosságának növekednie kell.

Figyelje meg, hogy a veszteség idővel csökkenni fog, és a pontosság növekedni fog. Ha a betanítási és érvényesítési adatok eltérnek, előfordulhat, hogy túlillesztés következik be. Próbálja ki a betanítást kevesebb korszakmal vagy kisebb tanulási sebesség-szorzóval.

Ellenőrzőpontok

Amikor minden betanítási korszak befejeződik, létrejön egy ellenőrzőpont. Az ellenőrzőpontokat az Ellenőrzőpontok kimutatásban tekintheti meg.

Az ellenőrzőpont egy modell teljes funkcionalitású verziója, amely üzembe helyezhető és célmodellként is használható a későbbi finomhangolási feladatokhoz. Az ellenőrzőpontok különösen hasznosak lehetnek, mert a túlillesztés előtt pillanatképeket biztosíthatnak. Amikor egy finomhangolási feladat befejeződik, a modell három legújabb verziója érhető el az üzembe helyezéshez. A REST API-val ellenőrzőpontokat másolhat az erőforrások és az előfizetések között.

Megjegyzés:

A betanítás során megtekintheti a metrikákat, és szükség szerint szüneteltetheti a feladatot. A szüneteltetés akkor lehet hasznos, ha a metrikák nem konvergensek, vagy ha úgy érzi, hogy a modell nem a megfelelő ütemben tanul. Ha szüneteltet egy betanítási feladatot, a biztonsági értékelések befejezése után létrejön egy üzembe helyezhető ellenőrzőpont. Ez az ellenőrzőpont az Ön számára elérhető, hogy üzembe helyezze és inferencia céljából használja, vagy folytathatja a feladatot annak befejezéséhez.

A szüneteltetési művelet csak olyan feladatokra alkalmazható, amelyek legalább egy lépésre be vannak tanítva, és futó állapotban vannak. A szüneteltetés csak OpenAI-modellek esetén támogatott.

A finomhangolt modell üzembe helyezése

Fontos

A modellek üzembe helyezéséhez szüksége van az Azure AI-tulajdonosi szerepkörre vagy a Microsoft.CognitiveServices/accounts/deployments/write művelettel rendelkező bármely szerepkörre.

Ha elégedett a finomhangolási feladat metrikáival, telepítheti a modellt a részletek lapon található Üzembe helyezés gombra kattintva, majd konfigurálhatja az üzembe helyezési beállításokat.

További információkért tekintse meg a finomhangolási üzembehelyezési útmutatót.

Üzembe helyezett, finomhangolt modell használata

A finomhangolt modell üzembe helyezése után a többi üzembe helyezett modellhez hasonlóan használhatja. A Foundryben található játszótéren kísérletezhet az új üzembe helyezéssel. A REST API-val a saját alkalmazásból is meghívhatja a finomhangolt modellt. Ezt az új, finomhangolt modellt a parancssori folyamatban is használhatja a generatív AI-alkalmazás létrehozásához.

Megjegyzés:

Csevegőmodellek esetén a finomhangolt modell irányításához használt rendszerüzenetnek (legyen az üzembe helyezve vagy a játszótéren való teszteléshez elérhető) meg kell egyeznie a betanításhoz használt rendszerüzenettel. Ha másik rendszerüzenetet használ, előfordulhat, hogy a modell nem a várt módon működik.

Folyamatos finomhangolás végrehajtása

A finomhangolt modell létrehozása után érdemes lehet a további finomhangolással tovább finomítani a modellt. A folyamatos finomhangolás egy már finomhangolt modell alapmodellként való kiválasztásának és az új betanítási példák további finomhangolásának iteratív folyamata.

A korábban finomhangolt modell finomhangolásához ugyanazt a folyamatot kell használnia, amelyet a finomhangolt modell létrehozása című cikkben ismertetett. Az általános alapmodell nevének megadása helyett azonban a már finomhangolt modellt kell megadnia. Az egyéni finomhangolt modell gpt-4o-2024-08-06.ft-d93dda6110004b4da3472d96f4dd4777-ft így néz ki.

A folyamatos finomhangolás csak OpenAI-modellek esetén támogatott.

Erőforrások megtisztítása

Ha már nincs szüksége a finomhangolt modellre, törölheti az üzembe helyezést és a modellt. Szükség esetén törölheti a szolgáltatásba feltöltött betanítási és érvényesítési fájlokat is.

A modell finomhangolt üzembe helyezésének törlése

Fontos

Ha egy testreszabott modell üzembe helyezése után az üzembe helyezés 15 napnál hosszabb ideig inaktív marad, a rendszer törli az üzembe helyezést. A testreszabott modell üzembe helyezése inaktív, ha a modell több mint 15 nappal ezelőtt lett üzembe helyezve, és egyetlen csevegésbefejezés vagy válasz API-hívást sem hajtottak végre a folyamatos 15 napos időszak során.

Az inaktív üzemelő példány törlése nem törli vagy befolyásolja az alapul szolgáló testreszabott modellt. A testre szabott modell bármikor újra üzembe helyezhető.

Az Azure OpenAI a Microsoft Foundry Models díjszabásában leírtak szerint az üzembe helyezett minden testre szabott (finomhangolt) modell óránkénti üzemeltetési költséget okoz, függetlenül attól, hogy a modellen csevegések vagy válasz API-hívások vannak-e. Az Azure OpenAI költségeinek tervezésével és kezelésével kapcsolatos további információkért lásd: Az Azure OpenAI költségeinek megtervezése és kezelése.

A finomhangolt modell üzembe helyezését az Foundry portál Modellek létrehozása>lapján törölheti .

A finomhangolt modell törlése

Az Foundry portál finomhangolási oldalán törölhet egy finomhangolt modellt. Válassza ki a törölni kívánt finomhangolt modellt, majd válassza a Törlés lehetőséget.

Megjegyzés:

Ha már rendelkezik üzembe helyezéssel, nem törölhet finomhangolt modellt. A finomhangolt modell törlése előtt el kell távolítania a modell üzembe helyezését.

Előfeltételek

Támogatott modellek

Annak ellenőrzéséhez, hogy mely régiók támogatják jelenleg a finomhangolást, tekintse meg a modellekről szóló cikket.

Vagy finomhangolhat egy korábban finomhangolt modellt, amely a következő formátumban van: base-model.ft-{jobid}.

A Python SDK munkafolyamatának áttekintése

Szánjon egy kis időt a Python SDK Azure OpenAI-val való használatára vonatkozó finomhangolási munkafolyamat áttekintésére:

  1. A betanítási és érvényesítési adatok előkészítése.
  2. Válasszon egy alapmodellt.
  3. Töltse fel a betanítási adatokat.
  4. Betanítsa az új testreszabott modellt.
  5. Ellenőrizze a testreszabott modell állapotát.
  6. A testre szabott modell üzembe helyezése használatra.
  7. Használja a testre szabott modellt.
  8. Igény szerint elemezheti a testre szabott modellt a teljesítmény és az illesztés szempontjából.

A betanítási és érvényesítési adatok előkészítése

A betanítási és érvényesítési adatkészletek bemeneti és kimeneti példákból állnak, amelyekből megtudhatja, hogyan szeretné végrehajtani a modellt.

A használt betanítási és érvényesítési adatokat JSON Lines (JSONL) dokumentumként kell formázni. A Csevegés befejezése API által használt beszélgetési formátumot is meg kell formázni.

A JSONL formátumon kívül a betanítási és érvényesítési adatfájlokat UTF-8-ban kell kódolni, és tartalmaznia kell egy bájtsorrendjelet (BOM). Minden fájlnak 512 MB-nál kisebb méretűnek kell lennie.

Ha részletes útmutatót szeretne a finomhangolásról gpt-4o-mini-2024-07-18, tekintse meg az Azure OpenAI finomhangolási oktatóanyagát.

Példa fájlformátumra

{"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."}]}

Többfordulós beszélgetési fájlformátum

A JSONL-betanítási fájl egyetlen sorában több beszélgetés is támogatott. Ha nem szeretne finomhangolni bizonyos segédüzeneteken, adja hozzá az opcionális weight kulcs-érték párot. Jelenleg a következőre állítható be: weight0 vagy 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital/major city 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}]}

Csevegés befejezése látással

{"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."}]}

Betanítási és érvényesítési adatkészletek létrehozása

Minél több betanítási példa van, annál jobb. A finomhangolási feladatok nem folytatódnak legalább 10 betanítási példa nélkül, de ez a kis szám nem elegendő a modellválaszok észrevehető befolyásolásához. A sikeres finomhangolás ajánlott eljárása több száz, ha nem ezres számú betanítási példa biztosítása.

Általánosságban elmondható, hogy az adathalmaz méretének megduplázása lineáris modellminőség-növekedéshez vezethet. Ne feledje azonban, hogy az alacsony minőségű példák negatív hatással lehetnek a teljesítményre. Ha nagy mennyiségű belső adaton tanítja be a modellt anélkül, hogy először kiszűrné csak a legmagasabb minőségű példákat, a modell a vártnál rosszabb teljesítményt érhet el.

Betanítási adatok feltöltése

A következő lépés a meglévő előkészített betanítási adatok kiválasztása, vagy új előkészített betanítási adatok feltöltése a modell testreszabása során. A betanítási adatok előkészítése után feltöltheti fájljait a szolgáltatásba. A betanítási adatok kétféleképpen tölthetők fel:

Nagy adatfájlok esetén javasoljuk, hogy importálja a Blob Storage-ból. A nagyméretű fájlok instabillá válhatnak, ha többrészes űrlapokon keresztül tölti fel őket, mert a kérések atomiak, és nem lehet újrapróbálkozást vagy folytatást folytatni. További információ a Blob Storage-ról: Mi az Az Azure Blob Storage?

Az alábbi Python-példa feltölti a helyi betanítási és érvényesítési fájlokat a Python SDK használatával, és lekéri a visszaadott fájlazonosítókat:

import os
from openai import OpenAI

# Load the OpenAI client
client = OpenAI(
  api_key = os.getenv("AZURE_OPENAI_API_KEY"),  
  base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
)

# Upload the training and validation dataset files to Microsoft Foundry with the SDK.
training_file_name = 'training_set.jsonl'
validation_file_name = 'validation_set.jsonl'

training_response = client.files.create(file=open(training_file_name, "rb"), purpose="fine-tune")
validation_response = client.files.create(file=open(validation_file_name, "rb"), purpose="fine-tune")
training_file_id = training_response.id
validation_file_id = validation_response.id

print("Training file ID:", training_file_id)
print("Validation file ID:", validation_file_id)

Testreszabott modell létrehozása

Miután feltöltötte a betanítási és érvényesítési fájlokat, készen áll a finomhangolási feladat elindítására.

Az alábbi Python-kód egy példát mutat be arra, hogyan hozhat létre új finomhangolási feladatot a Python SDK használatával:

response = client.fine_tuning.jobs.create(
    training_file=training_file_id,
    validation_file=validation_file_id,
    model="gpt-4.1-2025-04-14", # Enter the base model name.
    suffix="my-model", # Custom suffix for naming the resulting model. Note that in Microsoft Foundry, the model can't contain dot/period characters.
    seed=105, # Seed parameter controls reproducibility of the fine-tuning job. If you don't specify a seed, one is generated automatically.
    extra_body={ "trainingType": "GlobalStandard" } # Change this value to your preferred training type. Other options are `Standard` and `Developer`.
)

job_id = response.id

# You can use the job ID to monitor the status of the fine-tuning job.
# The fine-tuning job takes some time to start and finish.

print("Job ID:", response.id)
print(response.model_dump_json(indent=2))

Megjegyzés:

Javasoljuk, hogy a global standard szintet használja a betanítási típushoz, mivel költségmegtakarítást biztosít, és globális kapacitást használ a gyorsabb sorbaállási időkhez. Azonban az aktuális erőforrásterületen kívül másolja az adatokat és a súlyokat. Ha az adatrezidencia követelmény, használjon egy modellt, amely támogatja a standard szintű betanítást.

További opcionális paramétereket is átadhat, például hiperparamétereket, hogy jobban kézben tarthassa a finomhangolási folyamatot. Az első betanításhoz javasoljuk, hogy a paraméterek megadása nélkül jelen lévő automatikus alapértelmezett értékeket használja.

A felügyelt finomhangoláshoz jelenleg támogatott hiperparaméterek a következők:

Név Típus Leírás
batch_size Egész szám A betanításhoz használandó csoportméret. A batch mérete azoknak a betanítási példáknak a száma, amelyeket egyetlen előre- és hátrameneti lépés során használnak fel a tanításhoz. Általánosságban elmondható, hogy a nagyobb kötegméretek általában jobban működnek a nagyobb adathalmazok esetében.

A tulajdonság alapértelmezett értéke és maximális értéke egy alapmodellre vonatkozik. A nagyobb kötegméret azt jelenti, hogy a modellparaméterek ritkábban, de alacsonyabb varianciával frissülnek.
learning_rate_multiplier Szám A betanításhoz használandó tanulási sebesség szorzója. A finomhangolási tanulási ráta az előzetes betanításhoz használt eredeti tanulási ráta, ezzel az értékkel szorozva.

A nagyobb tanulási sebességek általában jobban teljesítenek a nagyobb batchméretekkel. Javasoljuk, hogy kísérletezzen 0.02 és 0.2 közötti értékekkel, hogy lássa, mi hozza a legjobb eredményt. A túlillesztés elkerülése érdekében hasznos lehet a kisebb tanulási arány.
n_epochs Egész szám A modell betanításához szükséges epochák száma. A korszak egy teljes ciklusra utal a betanítási adathalmazon keresztül.
seed Egész szám A feladat reprodukálhatóságát szabályozó mag. Az azonos vetőmag- és feladatparaméterek átadása ugyanazokat az eredményeket eredményezi, de ritka esetekben eltérhet. Ha nem ad meg magot, akkor a rendszer automatikusan létrehoz egyet önnek.

Ha egyéni hiperparamétereket szeretne beállítani az OpenAI Python API 1.x verziójával, adja meg őket a következők methodrészeként:

client.fine_tuning.jobs.create(
  training_file="file-abc123", 
  model="gpt-4.1-2025-04-14",
  suffix="my-model",
  seed=105,
  method={
    "type": "supervised", # In this case, the job is using supervised fine-tuning.
    "supervised": {
      "hyperparameters": {
        "n_epochs": 2
      }
    }
  },
  extra_body={ "trainingType": "GlobalStandard" }
)

A többi testreszabási módszer támogatott hiperparamétereinek megismeréséhez tekintse meg a közvetlen preferenciális optimalizálás útmutatóját és a megerősítés finomhangolását ismertető útmutatót.

Betanítás típusa

Válassza ki a képzési szintet a használati eset és a költségvetés alapján:

  • Standard: A betanítás az aktuális Foundry-erőforrás régiójában történik, és garantálja az adatok tárolását. Ideális olyan számítási feladatokhoz, ahol az adatoknak egy adott régióban kell maradniuk.

  • Globális: A Standardhoz képest megfizethetőbb díjszabást biztosít a jelenlegi régión túli kapacitás használatával. A rendszer az adatokat és a súlyokat arra a régióra másolja, ahol a betanítás történik. Ideális, ha az adatlakóhely nem korlátozás, vagy gyorsabb sorba állítási időket szeretne.

  • Fejlesztő (előzetes verzió): Jelentős költségmegtakarítást biztosít a kihasználatlan kapacitás képzésre való használatával. Nincs késési vagy SLA-garancia, ezért előfordulhat, hogy az ebben a rétegben lévő feladatok automatikusan elő vannak állítva, és később újraindulnak. Az adatmegőrzési helyre sincs garancia. Ideális kísérletezéshez és árérzékeny számítási feladatokhoz.

import openai
from openai import AzureOpenAI

base_uri = "https://<ACCOUNT-NAME>.services.ai.azure.com"
api_key = "<API-KEY>"
api_version = "2025-04-01-preview"
client = AzureOpenAI(
azure_endpoint=base_uri,
api_key=api_key,
api_version=api_version
)
try:
    client.fine_tuning.jobs.create(
    model="gpt-4.1-mini",
    training_file="<FILE-ID>",
    extra_body={"trainingType": "developerTier"}
    )
except openai.APIConnectionError as e:
    print("The server could not be reached")
    print(e.__cause__) # An underlying exception, likely raised within httpx.
except openai.RateLimitError as e:
    print("A 429 status code was received; we should back off a bit.")
except openai.APIStatusError as e:
    print("Another non-200-range status code was received")
    print(e.status_code)
    print(e.response)
    print(e.body)

A finomhangolási feladat állapotának ellenőrzése

response = client.fine_tuning.jobs.retrieve(job_id)

print("Job ID:", response.id)
print("Status:", response.status)
print(response.model_dump_json(indent=2))

Események finomhangolásának listázása

A betanítás során létrehozott egyéni finomhangolási események vizsgálatához futtassa a következő parancsot. A parancs futtatása előtt előfordulhat, hogy frissítenie kell az OpenAI-ügyfélkódtárat a legújabb verzióra a használatával 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))

Ellenőrzőpontok listázása

Az egyes betanítási korszakok elvégzése ellenőrzőpontot hoz létre. Az ellenőrzőpont egy modell teljes funkcionalitású verziója, amely üzembe helyezhető és célmodellként is használható a későbbi finomhangolási feladatokhoz. Az ellenőrzőpontok különösen hasznosak lehetnek, mert a túlillesztés előtt pillanatképeket biztosíthatnak.

Amikor egy finomhangolási feladat befejeződik, a modell három legújabb verziója érhető el az üzembe helyezéshez. A finomhangolt modell az utolsó korszakot jelöli. Az előző két fázis ellenőrzőpontokként érhetők el.

Az alábbi parancs futtatásával lekérheti az egyes finomhangolási feladatokhoz társított ellenőrzőpontok listáját. A parancs futtatása előtt előfordulhat, hogy frissítenie kell az OpenAI-ügyfélkódtárat a legújabb verzióra a használatával pip install openai --upgrade.

response = client.fine_tuning.jobs.checkpoints.list(job_id)
print(response.model_dump_json(indent=2))

A testre szabott modell elemzése

Az Azure OpenAI minden finomhangolási feladathoz csatol egy eredményfájlt results.csv a befejezés után. Az eredményfájl használatával elemezheti a testre szabott modell betanítási és érvényesítési teljesítményét. Az eredményfájl fájlazonosítója minden testre szabott modell esetében megjelenik. A Python SDK-val lekérheti a fájlazonosítót, és letöltheti az eredményfájlt elemzésre.

Az alábbi Python-példa lekéri a testre szabott modell finomhangolási feladatához csatolt első eredményfájl fájlazonosítóját. Ezután a Python SDK használatával tölti le a fájlt az aktuális munkakönyvtárba elemzés céljából.

# 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)

Az eredményfájl egy CSV-fájl, amely egy fejlécsort és egy sort tartalmaz minden betanítási lépéshez, amelyet a finomhangolási feladat hajt végre. Az eredményfájl a következő oszlopokat tartalmazza:

Oszlop név Leírás
step A betanítási lépés száma. A betanítási lépés egy betanítási adatköteg egyetlen áthaladását, előre- és hátralépését jelöli.
train_loss A betanítási batch vesztesége.
train_mean_token_accuracy A modell által helyesen előrejelzett tokenek százalékos aránya a betanítási kötegben.

Például, ha a köteg mérete 3 értékre van állítva, és az adatok befejezéseket [[1, 2], [0, 5], [4, 2]] tartalmaznak, akkor ez az érték 0.83 (6 közül 5) értékre van beállítva, ha a modell [[1, 1], [0, 5], [4, 2]]-t előrejelzi.
valid_loss A validációs tétel vesztesége.
validation_mean_token_accuracy A modell által helyesen előrejelzett validációs tétel tokenjeinek százalékos aránya.

Például, ha a köteg mérete 3 értékre van állítva, és az adatok befejezéseket [[1, 2], [0, 5], [4, 2]] tartalmaznak, akkor ez az érték 0.83 (6 közül 5) értékre van beállítva, ha a modell [[1, 1], [0, 5], [4, 2]]-t előrejelzi.
full_valid_loss Az egyes korszakok végén kiszámított érvényesítési veszteség. Ha a betanítás jól megy, a veszteségnek csökkennie kell.
full_valid_mean_token_accuracy Az érvényes átlagos tokenpontosság, amelyet az egyes epochák végén számítunk ki. Ha a tréning jól halad, a token pontosságának növekednie kell.

A fájlban lévő results.csv adatokat ábrázolásként is megtekintheti a Microsoft Foundry portálon. A betanított modell hivatkozásának kiválasztásakor három diagram jelenik meg: veszteség, átlagos token pontosság és token pontosság. Ha érvényesítési adatokat adott meg, mindkét adatkészlet ugyanazon a diagramon jelenik meg.

Figyelje meg, hogy a veszteség idővel csökkenni fog, és a pontosság növekedni fog. Ha a betanítási és érvényesítési adatok eltérnek, előfordulhat, hogy túlillesztés következik be. Próbálja ki a betanítást kevesebb korszakmal vagy kisebb tanulási sebesség-szorzóval.

Finomhangolt modell üzembe helyezése

Ha elégedett a finomhangolási feladat metrikáival, vagy csak tovább szeretne lépni a következtetésre, telepítenie kell a modellt.

Ha további validálás céljából helyez üzembe, fontolja meg a tesztelést egy fejlesztői üzembe helyezéssel.

Az előző SDK-parancsokkal ellentétben az üzembe helyezéshez a vezérlősík API-ját kell használnia. Ehhez a feladathoz külön engedélyezésre, egy másik API-elérési útra és egy másik API-verzióra van szükség.

Variable Definíció
token Egy engedélyezési jogkivonat. Az engedélyezési tokenek többféleképpen is létrehozhatók. A kezdeti tesztelés legegyszerűbb módja az Azure Cloud Shell megnyitása az Azure Portalról. Ez után futtassa a az account get-access-token parancsot. Ezt a jogkivonatot használhatja ideiglenes engedélyezési jogkivonatként API-teszteléshez. Ajánljuk, hogy ezt a jelszóvektort egy új környezeti változóban tárolja.
subscription A társított Azure OpenAI-erőforrás előfizetés-azonosítója.
resource_group Az Azure OpenAI-erőforrás erőforráscsoportjának neve.
resource_name Az Azure OpenAI-erőforrás neve.
model_deployment_name Az új, finomhangolt modell telepítésének egyéni neve. Erre a névre hivatkozik a kód a csevegés befejező hívásai során.
fine_tuned_model A finomhangolt modell. Kérje le ezt az értéket a finomhangolási feladat eredményéből az előző lépésben. A következőhöz hasonlít: gpt-4.1-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83. Hozzá kell adnia az értéket a deploy_data JSON-hoz. Másik lehetőségként egy ellenőrzőpont üzembe helyezéséhez adja meg az ellenőrzőpont azonosítóját, amely a formátumban ftchkpt-e559c011ecc04fc68eaa339d8227d02djelenik meg.
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 use to reference the model when making inference calls.

deploy_params = {'api-version': "2024-10-01"} # Control plane API version rather than the data plane 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 looks 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())

A régiók közötti üzembe helyezésről és az üzembe helyezett modell használatáról további információt az üzembe helyezett, finomhangolt modell használata című témakörben talál.

Ha készen áll az éles üzembe helyezésre, vagy adott adattárolási igényei vannak, kövesse az üzembe helyezési útmutatót.

Folyamatos finomhangolás végrehajtása

A finomhangolt modell létrehozása után érdemes lehet a további finomhangolással tovább finomítani a modellt. A folyamatos finomhangolás egy már finomhangolt modell alapmodellként való kiválasztásának és az új betanítási példák további finomhangolásának iteratív folyamata. A folyamatos finomhangolás csak OpenAI-modellek esetén támogatott.

A korábban finomhangolt modell finomhangolásához ugyanazt a folyamatot kell használnia, amelyet a testreszabott modell létrehozása című cikkben ismertetett. Az általános alapmodell nevének megadása helyett azonban meg kell adnia a finomhangolt modell azonosítóját. A finomhangolt modell azonosítója a következőképpen gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7néz ki.

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 takes some time to start and finish.

print("Job ID:", response.id)
print("Status:", response.id)
print(response.model_dump_json(indent=2))

Azt is javasoljuk, hogy adja meg a paramétert a suffix finomhangolt modell iterációinak könnyebb megkülönböztetéséhez. A suffix paraméter egy sztringet vesz fel, és a finomhangolt modell azonosítására van beállítva. Az OpenAI Python API-val legfeljebb 18 karakter hosszúságú sztringet adhat hozzá a finomhangolt modell nevéhez.

Ha nem biztos a meglévő finomhangolt modell azonosítójában, ezeket az információkat a Microsoft Foundry Modellek lapján találja. Vagy létrehozhat modellek listáját egy Azure OpenAI-erőforráshoz a REST API használatával.

Tisztítsa meg a telepítéseket, a testreszabott modelleket és a betanítási fájlokat

Ha már nincs szüksége a testre szabott modellre, törölheti az üzembe helyezést és a modellt. Szükség esetén törölheti a szolgáltatásba feltöltött betanítási és érvényesítési fájlokat is.

A modell üzembe helyezésének törlése

Fontos

Ha egy testreszabott modell üzembe helyezése után az üzembe helyezés 15 napnál hosszabb ideig inaktív marad, a rendszer törli az üzembe helyezést. A testreszabott modell üzembe helyezése inaktív, ha a modell több mint 15 nappal ezelőtt lett üzembe helyezve, és egyetlen csevegésbefejezés vagy válasz API-hívást sem hajtottak végre a folyamatos 15 napos időszak során.

Az inaktív üzemelő példány törlése nem törli vagy befolyásolja az alapul szolgáló testreszabott modellt. A testre szabott modell bármikor újra üzembe helyezhető.

Az Azure OpenAI a Microsoft Foundry Models díjszabásában leírtak szerint az üzembe helyezett minden testre szabott (finomhangolt) modell óránkénti üzemeltetési költséget okoz, függetlenül attól, hogy a modellen csevegések vagy válasz API-hívások vannak-e. Az Azure OpenAI költségeinek tervezésével és kezelésével kapcsolatos további információkért lásd: Az Azure OpenAI költségeinek megtervezése és kezelése.

Az alábbi módszerek bármelyikével törölheti a testreszabott modell üzembe helyezését:

A testre szabott modell törlése

A testre szabott modellt a Foundry használatával törölheti.

Megjegyzés:

A testre szabott modellek nem törölhetők, ha már rendelkezik központi telepítéssel. A testre szabott modell törlése előtt törölnie kell a modell üzembe helyezését .

Betanítási fájlok törlése

Az Azure OpenAI-előfizetésből opcionálisan törölheti a betanításhoz feltöltött betanítási és érvényesítési fájlokat, valamint a betanítás során létrehozott eredményfájlokat. Az alábbi módszerekkel törölheti a betanítási, érvényesítési és eredményfájlokat:

Az alábbi Python-példa a Python SDK használatával törli a testre szabott modell betanítási, érvényesítési és eredményfájljait:

print('Checking for existing uploaded files.')
results = []

# Get the complete list of uploaded files in your subscription.
files = openai.File.list().data
print(f'Found {len(files)} total uploaded files in the subscription.')

# Enumerate all uploaded files. Extract the IDs for the
# files with file names that match your training dataset file and
# validation dataset file.
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 your files and delete each file.
print(f'Deleting already uploaded files.')
for id in results:
    openai.File.delete(sid = id)

Előfeltételek

Támogatott modellek

Annak ellenőrzéséhez, hogy mely régiók támogatják jelenleg a finomhangolást, tekintse meg a modellekről szóló cikket.

Vagy finomhangolhat egy korábban finomhangolt modellt, amely a következő formátumban van: base-model.ft-{jobid}.

A REST API munkafolyamatának áttekintése

Szánjon egy kis időt a REST API és a Python Azure OpenAI-val való használatára vonatkozó finomhangolási munkafolyamat áttekintésére:

  1. A betanítási és érvényesítési adatok előkészítése.
  2. Válasszon egy alapmodellt.
  3. Töltse fel a betanítási adatokat.
  4. Betanítsa az új testreszabott modellt.
  5. Ellenőrizze a testreszabott modell állapotát.
  6. A testre szabott modell üzembe helyezése használatra.
  7. Használja a testre szabott modellt.
  8. Igény szerint elemezheti a testre szabott modellt a teljesítmény és az illesztés szempontjából.

A betanítási és érvényesítési adatok előkészítése

A betanítási és érvényesítési adatkészletek bemeneti és kimeneti példákból állnak, amelyekből megtudhatja, hogyan szeretné végrehajtani a modellt.

A használt betanítási és érvényesítési adatokat JSON Lines (JSONL) dokumentumként kell formázni. A Csevegés befejezése API által használt beszélgetési formátumot is meg kell formázni.

A JSONL formátumon kívül a betanítási és érvényesítési adatfájlokat UTF-8-ban kell kódolni, és tartalmaznia kell egy bájtsorrendjelet (BOM). Minden fájlnak 512 MB-nál kisebb méretűnek kell lennie.

Ha részletes útmutatót szeretne a finomhangolásról gpt-4o-mini-2024-07-18, tekintse meg az Azure OpenAI finomhangolási oktatóanyagát.

Példa fájlformátumra

{"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."}]}

Többfordulós beszélgetési fájlformátum

A JSONL-betanítási fájl egyetlen sorában több beszélgetés is támogatott. Ha nem szeretne finomhangolni bizonyos segédüzeneteken, adja hozzá az opcionális weight kulcs-érték párot. Jelenleg a következőre állítható be: weight0 vagy 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital/major city 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}]}

Csevegés befejezése látással

{"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."}]}

Betanítási és érvényesítési adatkészletek létrehozása

Minél több betanítási példa van, annál jobb. A finomhangolási feladatok nem folytatódnak legalább 10 betanítási példa nélkül, de ez a kis szám nem elegendő a modellválaszok észrevehető befolyásolásához. A sikeres finomhangolás ajánlott eljárása több száz, ha nem ezres számú betanítási példa biztosítása.

Általánosságban elmondható, hogy az adathalmaz méretének megduplázása lineáris modellminőség-növekedéshez vezethet. Ne feledje azonban, hogy az alacsony minőségű példák negatív hatással lehetnek a teljesítményre. Ha nagy mennyiségű belső adaton tanítja be a modellt anélkül, hogy először kiszűrné csak a legmagasabb minőségű példákat, a modell a vártnál rosszabb teljesítményt érhet el.

Betanítási adatok feltöltése

A következő lépés a meglévő előkészített betanítási adatok kiválasztása, vagy új előkészített betanítási adatok feltöltése a modell testreszabása során. A betanítási adatok előkészítése után feltöltheti fájljait a szolgáltatásba. A betanítási adatok kétféleképpen tölthetők fel:

Nagy adatfájlok esetén javasoljuk, hogy importálja a Blob Storage-ból. A nagyméretű fájlok instabillá válhatnak, ha többrészes űrlapokon keresztül tölti fel őket, mert a kérések atomiak, és nem lehet újrapróbálkozást vagy folytatást folytatni. További információ a Blob Storage-ról: Mi az Az Azure Blob Storage?

Betanítási adatok feltöltése

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/files \
  -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"

Érvényesítési adatok feltöltése

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/files \
  -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"

Testreszabott modell létrehozása

Miután feltöltötte a betanítási és érvényesítési fájlokat, készen áll a finomhangolási feladat elindítására. Az alábbi kód egy példát mutat be arra, hogyan hozhat létre új finomhangolási feladatot a REST API használatával.

Ez a példa a magparaméter átadását is magában foglalja. A vetőmag szabályozza a feladat reprodukálhatóságát. Az azonos vetőmag- és feladatparaméterek átadása ugyanazokat az eredményeket eredményezi, de ritka esetekben eltérhet. Ha nem ad meg magot, akkor a rendszer automatikusan létrehoz egyet önnek.

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs \
  -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
}'

Ha egy olyan modellt finomhangol, amely támogatja a globális betanítást, megadhatja a betanítás típusát a extra_body nevű argumentum használatával, és a következőképpen: api-version=2025-04-01-preview.

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs?api-version=2025-04-01-preview \
  -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,
    "trainingType": "globalstandard"
}'

További opcionális paramétereket, például hiperparamétereket is átadhat a finomhangolási folyamat jobb szabályozásához. Az első betanításhoz javasoljuk, hogy a paraméterek megadása nélkül jelen lévő automatikus alapértelmezett értékeket használja.

A felügyelt finomhangoláshoz jelenleg támogatott hiperparaméterek a következők:

Név Típus Leírás
batch_size Egész szám A betanításhoz használandó csoportméret. A batch mérete azoknak a betanítási példáknak a száma, amelyeket egyetlen előre- és hátrameneti lépés során használnak fel a tanításhoz. Általánosságban elmondható, hogy a nagyobb kötegméretek általában jobban működnek a nagyobb adathalmazok esetében.

A tulajdonság alapértelmezett értéke és maximális értéke egy alapmodellre vonatkozik. A nagyobb kötegméret azt jelenti, hogy a modellparaméterek ritkábban, de alacsonyabb varianciával frissülnek.
learning_rate_multiplier Szám A betanításhoz használandó tanulási sebesség szorzója. A finomhangolási tanulási ráta az előzetes betanításhoz használt eredeti tanulási ráta, ezzel az értékkel szorozva.

A nagyobb tanulási sebességek általában jobban teljesítenek a nagyobb batchméretekkel. Javasoljuk, hogy kísérletezzen 0.02 és 0.2 közötti értékekkel, hogy lássa, mi hozza a legjobb eredményt. A túlillesztés elkerülése érdekében hasznos lehet a kisebb tanulási arány.
n_epochs Egész szám A modell betanításához szükséges epochák száma. A korszak egy teljes ciklusra utal a betanítási adathalmazon keresztül.
seed Egész szám A feladat reprodukálhatóságát szabályozó mag.

A többi testreszabási módszer támogatott hiperparamétereinek megismeréséhez tekintse meg a közvetlen preferenciális optimalizálás útmutatóját és a megerősítés finomhangolását ismertető útmutatót.

Betanítási típus kiválasztása

Válassza ki a képzési szintet a használati eset és a költségvetés alapján:

  • Standard: A betanítás az aktuális Foundry-erőforrás régiójában történik, és garantálja az adatok tárolását. Ideális olyan számítási feladatokhoz, ahol az adatoknak egy adott régióban kell maradniuk.

  • Globális: A Standardhoz képest megfizethetőbb díjszabást biztosít a jelenlegi régión túli kapacitás használatával. A rendszer az adatokat és a súlyokat arra a régióra másolja, ahol a betanítás történik. Ideális, ha az adatlakóhely nem korlátozás, vagy gyorsabb sorba állítási időket szeretne.

  • Fejlesztő (előzetes verzió): Jelentős költségmegtakarítást biztosít a kihasználatlan kapacitás képzésre való használatával. Nincs késési vagy SLA-garancia, ezért előfordulhat, hogy az ebben a rétegben lévő feladatok automatikusan elő vannak állítva, és később újraindulnak. Nincs adattárolási garancia sem. Ideális kísérletezéshez és árérzékeny számítási feladatokhoz.

curl -X POST "https://<ACCOUNT-NAME>.openai.azure.com/openai/fine_tuning/jobs?api-version=2025-04-01-preview" -H "Content-Type: application/json" -H "api-key: <API-KEY>" -d "{"model": "gpt-4.1", "training_file": "<FILE_ID>", "hyperparameters": {"prompt_loss_weight": 0.1}, "trainingType": "developerTier"}"

A testreszabott modell állapotának ellenőrzése

A finomhangolási feladat elindítása után egy ideig eltarthat a befejezése. Előfordulhat, hogy a feladat várólistára kerül a rendszerben lévő többi feladat mögött. A modell betanítása a modell és az adathalmaz méretétől függően perceket vagy órákat is igénybe vehet.

Az alábbi példa a REST API használatával ellenőrzi a finomhangolási feladat állapotát. A példa az előző példából visszaadott feladatazonosító használatával kéri le a feladat adatait.

curl -X GET $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/<YOUR-JOB-ID> \
  -H "api-key: $AZURE_OPENAI_API_KEY"

Események finomhangolásának listázása

A betanítás során létrehozott egyéni finomhangolási események vizsgálata:

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/events \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Ellenőrzőpontok listázása

Az egyes betanítási korszakok elvégzése ellenőrzőpontot hoz létre. Az ellenőrzőpont egy modell teljes funkcionalitású verziója, amely üzembe helyezhető és célmodellként is használható a későbbi finomhangolási feladatokhoz. Az ellenőrzőpontok különösen hasznosak lehetnek, mert a túlillesztés előtt pillanatképeket biztosíthatnak.

Amikor egy finomhangolási feladat befejeződik, a modell három legújabb verziója érhető el az üzembe helyezéshez. A finomhangolt modell az utolsó korszakot jelöli. Az előző két fázis ellenőrzőpontokként érhetők el.

Az alábbi parancs futtatásával lekérheti az egyes finomhangolási feladatokhoz társított ellenőrzőpontok listáját:

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Szüneteltetés és folytatás

A betanítás során megtekintheti a naplókat és a metrikákat, és szükség szerint szüneteltetheti a feladatot. A szüneteltetés akkor lehet hasznos, ha a metrikák nem konvergensek, vagy ha úgy érzi, hogy a modell nem a megfelelő ütemben tanul.

A betanítási feladat szüneteltetése és a biztonsági értékelések befejezése után létrejön egy üzembe helyezhető ellenőrzőpont. Ez az ellenőrzőpont az Ön számára elérhető, hogy üzembe helyezze és inferencia céljából használja, vagy folytathatja a feladatot annak befejezéséhez.

A szüneteltetési művelet csak olyan feladatokra alkalmazható, amelyek legalább egy lépésre be vannak tanítva, és futó állapotban vannak.

Szünet

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Önéletrajz

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Modell másolása (előzetes verzió)

Mostantól átmásolhat egy finomhangolt ellenőrzőponttal rendelkező modellt az egyik régióból a másikba, különböző előfizetések között, de ugyanazon a bérlőn belül. A folyamat dedikált API-kat használ a hatékony és biztonságos átvitel biztosításához. Ez a funkció jelenleg csak az API-val érhető el, az Foundry portálon keresztül nem.

Miután a modellt átmásolta az A régióból a B régióba, folyamatosan finomhangolhatja a modellt a B régióban, és innen telepítheti a modellt.

Megjegyzés:

A modell ellenőrzőpontjának törlése a forrásrégióban nem eredményezi a modell törlését a célrégióban. Ha a másolás után mindkét régióban törölni szeretné a modellt, minden régióban külön kell üzembe helyeznie a modellt.

Előfeltételek

  • A célerőforrásnak vagy -fióknak legalább egy finomhangolási feladatgal kell rendelkeznie.
  • A célerőforrás vagy -fiók nem tilthatja le a nyilvános hálózati hozzáférést (legalábbis a másolási kérelem elküldése közben).
  • Csak akkor másolhat a célfiókba, ha a másolatot kezdeményező fiók rendelkezik a célfiók eléréséhez szükséges engedélyekkel.

Engedélyek konfigurálása

  1. Felhasználó által hozzárendelt felügyelt identitás létrehozása.
  2. Adja meg az Azure AI-felhasználói szerepkört a felhasználó által hozzárendelt felügyelt identitásnak a célerőforráson vagy -fiókon.
  3. Rendelje hozzá a felhasználó által hozzárendelt felügyelt identitást a forráserőforrás-fiókhoz.

A modell másolása

curl --request POST \
  --url 'https://<aoai-resource>.openai.azure.com/openai/v1/fine_tuning/jobs/<ftjob>/checkpoints/<checkpoint-name>/copy' \
  --header 'Content-Type: application/json' \
  --header 'api-key: <api-key>' \
  --header 'aoai-copy-ft-checkpoints: preview' \
  --data '{
  "destinationResourceId": "<resourceId>",
  "region": "<region>"
}'

Mivel ez egy hosszú ideig futó művelet, ellenőrizze a finomhangolt modellpéldány állapotát a hívásban POST használt forrásfiók ellenőrzőpont-azonosítójának megadásával.

A másolás állapotának ellenőrzése

curl --request GET \
  --url 'https://<aoai-resource>.openai.azure.com//openai/v1/fine_tuning/jobs/<ftjob>/checkpoints/<checkpoint-name>/copy' \
  --header 'Content-Type: application/json' \
  --header 'api-key: <api-key>' \
  --header 'aoai-copy-ft-checkpoints: preview' 

Megjegyzés:

Ha egy ellenőrzőpontot egy forrásfiókból másol, ugyanaz az ellenőrzőpontnév marad meg a célfiókban. Győződjön meg arról, hogy pontosan ezt a nevet használja a célfiókban található finomhangoláshoz, üzembe helyezéshez vagy bármely más művelethez. Ez az ellenőrzőpont nem jelenik meg a felhasználói felületen vagy az list checkpoints API-ban.

A testre szabott modell elemzése

Az Azure OpenAI minden finomhangolási feladathoz csatol egy eredményfájlt results.csv a befejezés után. Az eredményfájl használatával elemezheti a testre szabott modell betanítási és érvényesítési teljesítményét. Az eredményfájl fájlazonosítója minden testre szabott modell esetében megjelenik. A REST API-val lekérheti a fájlazonosítót, és letöltheti az eredményfájlt elemzésre.

A következő Python-példa a REST API használatával kéri le a testre szabott modell finomhangolási feladatához csatolt első eredményfájl fájlazonosítóját. Ezután letölti a fájlt a munkakönyvtárba elemzés céljából.

curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/<JOB_ID>" \
  -H "api-key: $AZURE_OPENAI_API_KEY")
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/files/<RESULT_FILE_ID>/content" \
    -H "api-key: $AZURE_OPENAI_API_KEY" > <RESULT_FILENAME>

Az eredményfájl egy CSV-fájl, amely egy fejlécsort és egy sort tartalmaz minden betanítási lépéshez, amelyet a finomhangolási feladat hajt végre. Az eredményfájl a következő oszlopokat tartalmazza:

Oszlop név Leírás
step A betanítási lépés száma. A betanítási lépés egy betanítási adatköteg egyetlen áthaladását, előre- és hátralépését jelöli.
train_loss A tanulási csomag vesztesége.
train_mean_token_accuracy A modell által helyesen előrejelzett tokenek százalékos aránya a betanítási kötegben.

Például, ha a köteg mérete 3 értékre van állítva, és az adatok befejezéseket [[1, 2], [0, 5], [4, 2]] tartalmaznak, akkor ez az érték 0.83 (6 közül 5) értékre van beállítva, ha a modell [[1, 1], [0, 5], [4, 2]]-t előrejelzi.
valid_loss Az érvényesítési csomag vesztesége.
validation_mean_token_accuracy A modell által helyesen előrejelzett validációs tétel tokenjeinek százalékos aránya.

Például, ha a köteg mérete 3 értékre van állítva, és az adatok befejezéseket [[1, 2], [0, 5], [4, 2]] tartalmaznak, akkor ez az érték 0.83 (6 közül 5) értékre van beállítva, ha a modell [[1, 1], [0, 5], [4, 2]]-t előrejelzi.
full_valid_loss Az egyes korszakok végén kiszámított érvényesítési veszteség. Ha a betanítás jól megy, a veszteségnek csökkennie kell.
full_valid_mean_token_accuracy Az érvényes átlagos tokenpontosság, amelyet az egyes epochák végén számítunk ki. Ha a tréning jól halad, a token pontosságának növekednie kell.

A fájlban lévő results.csv adatokat ábrázolásként is megtekintheti az Foundry portálon. A betanított modell hivatkozásának kiválasztásakor három diagram jelenik meg: veszteség, átlagos token pontosság és token pontosság. Ha érvényesítési adatokat adott meg, mindkét adatkészlet ugyanazon a diagramon jelenik meg.

Figyelje meg, hogy a veszteség idővel csökkenni fog, és a pontosság növekedni fog. Ha a betanítási és érvényesítési adatok eltérnek, előfordulhat, hogy túlillesztés következik be. Próbálja ki a betanítást kevesebb korszakmal vagy kisebb tanulási sebesség-szorzóval.

Finomhangolt modell üzembe helyezése

Ha elégedett a finomhangolási feladat metrikáival, vagy csak tovább szeretne lépni a következtetésre, telepítenie kell a modellt.

Ha további validálás céljából helyez üzembe, fontolja meg a tesztelést egy fejlesztői üzembe helyezéssel.

Ha készen áll az éles üzembe helyezésre, vagy adott adattárolási igényei vannak, kövesse az üzembe helyezési útmutatót.

Variable Definíció
token Egy engedélyezési jogkivonat. Az engedélyezési tokenek többféleképpen is létrehozhatók. A kezdeti tesztelés legegyszerűbb módja az Azure Cloud Shell megnyitása az Azure Portalról. Ez után futtassa a az account get-access-token parancsot. Ezt a jogkivonatot használhatja ideiglenes engedélyezési jogkivonatként API-teszteléshez. Ajánljuk, hogy ezt a jelszóvektort egy új környezeti változóban tárolja.
subscription A társított Azure OpenAI-erőforrás előfizetés-azonosítója.
resource_group Az Azure OpenAI-erőforrás erőforráscsoportjának neve.
resource_name Az Azure OpenAI-erőforrás neve.
model_deployment_name Az új, finomhangolt modell telepítésének egyéni neve. Erre a névre hivatkozik a kód a csevegés befejező hívásai során.
fine_tuned_model A finomhangolt modell. Kérje le ezt az értéket a finomhangolási feladat eredményéből az előző lépésben. A következőhöz hasonlít: gpt-4.1-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83. Hozzá kell adnia az értéket a deploy_data JSON-hoz. Másik lehetőségként egy ellenőrzőpont üzembe helyezéséhez adja meg az ellenőrzőpont azonosítóját, amely a formátumban ftchkpt-e559c011ecc04fc68eaa339d8227d02djelenik meg.
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"
        }
    }
}'

A régiók közötti üzembe helyezésről és az üzembe helyezett modell használatáról további információt az üzembe helyezett, finomhangolt modell használata című témakörben talál.

Folyamatos finomhangolás végrehajtása

A finomhangolt modell létrehozása után érdemes lehet a további finomhangolással tovább finomítani a modellt. A folyamatos finomhangolás egy már finomhangolt modell alapmodellként való kiválasztásának és az új betanítási példák további finomhangolásának iteratív folyamata. A folyamatos finomhangolás csak OpenAI-modellek esetén támogatott.

A korábban finomhangolt modell finomhangolásához ugyanazt a folyamatot kell használnia, amelyet a testreszabott modell létrehozása című cikkben ismertetett. Az általános alapmodell nevének megadása helyett azonban meg kell adnia a finomhangolt modell azonosítóját. A finomhangolt modell azonosítója a következőképpen gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7néz ki.

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs \
  -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>"
}'

Azt is javasoljuk, hogy adja meg a paramétert a suffix finomhangolt modell iterációinak könnyebb megkülönböztetéséhez. A suffix paraméter egy sztringet vesz fel, és a finomhangolt modell azonosítására van beállítva. Az utótag legfeljebb 40 karaktert tartalmazhat, amelyek a következők: a-tól z-ig, A-tól Z-ig, 0-tól 9-ig, -, és _; ezeket hozzáadják a finomhangolt modell nevéhez.

Ha nem biztos a meglévő finomhangolt modell azonosítójában, ezt az információt a Foundry Modellek oldalán találja. Vagy létrehozhat modellek listáját egy Azure OpenAI-erőforráshoz a REST API használatával.

Tisztítsa meg a telepítéseket, a testreszabott modelleket és a betanítási fájlokat

Ha már nincs szüksége a testre szabott modellre, törölheti az üzembe helyezést és a modellt. Szükség esetén törölheti a szolgáltatásba feltöltött betanítási és érvényesítési fájlokat is.

A modell üzembe helyezésének törlése

Az alábbi módszerek bármelyikével törölheti a testreszabott modell üzembe helyezését:

A testre szabott modell törlése

A testre szabott modellt a Foundry használatával törölheti.

Megjegyzés:

A testre szabott modellek nem törölhetők, ha már rendelkezik központi telepítéssel. A testre szabott modell törlése előtt törölnie kell a modell üzembe helyezését .

Betanítási fájlok törlése

Az Azure OpenAI-előfizetésből opcionálisan törölheti a betanításhoz feltöltött betanítási és érvényesítési fájlokat, valamint a betanítás során létrehozott eredményfájlokat. A Foundry használatával törölheti a fájlokat.

A Microsoft Foundry portálon két egyedi finomhangolási felület érhető el:

Fontos

A cikkben megjelölt (előzetes verziójú) elemek jelenleg nyilvános előzetes verzióban érhetők el. Ez az előzetes verzió szolgáltatásszint-szerződés nélkül érhető el, és éles számítási feladatokhoz nem javasoljuk. Előfordulhat, hogy bizonyos funkciók nem támogatottak, vagy korlátozott képességekkel rendelkeznek. További információkért lásd: Microsoft Azure Previews Kiegészítő Felhasználási Feltételek.

Előfeltételek

Támogatott modellek

Annak ellenőrzéséhez, hogy mely régiók támogatják jelenleg a finomhangolást, tekintse meg a modellekről szóló cikket.

Vagy finomhangolhat egy korábban finomhangolt modellt, amely a következő formátumban van: base-model.ft-{jobid}.

Az Foundry portál munkafolyamatának áttekintése

Szánjon egy kis időt a finomhangolási munkafolyamat áttekintésére az Foundry portál használatához:

  1. A betanítási és érvényesítési adatok előkészítése.
  2. Az egyéni modell betanítása az Öntödei portálon található, finomhangolt modell létrehozása párbeszédpanelen történik.
    1. Válasszon ki egy betanítási módszert.
    2. Válasszon egy alapmodellt.
    3. Válassza ki a betanítás típusát.
    4. Válassza ki a betanítási adatokat.
    5. Igény szerint válassza ki az érvényesítési adatokat.
    6. Igény szerint konfigurálja a feladat paramétereit a finomhangolási feladathoz.
    7. Ha szeretné, engedélyezze az automatikus üzembe helyezést az eredményül kapott egyéni modellhez.
    8. Tekintse át a lehetőségeket, és tanítsa be az új egyéni modellt.
  3. Ellenőrizze az egyéni finomhangolt modell állapotát.
  4. Helyezze üzembe az egyéni modellt használathoz.
  5. Használja az egyéni modellt.
  6. Igény szerint elemezze az egyéni modellt a teljesítmény és az illesztés szempontjából.

A betanítási és érvényesítési adatok előkészítése

A betanítási és érvényesítési adatkészletek bemeneti és kimeneti példákból állnak, amelyekből megtudhatja, hogyan szeretné végrehajtani a modellt.

A használt betanítási és érvényesítési adatokat JSON Lines (JSONL) dokumentumként kell formázni. A Csevegés befejezése API által használt beszélgetési formátumot is meg kell formázni.

A JSONL formátumon kívül a betanítási és érvényesítési adatfájlokat UTF-8-ban kell kódolni, és tartalmaznia kell egy bájtsorrendjelet (BOM). Minden fájlnak 512 MB-nál kisebb méretűnek kell lennie.

Általában azt javasoljuk, hogy minden betanítási példában a legjobban bevált utasításokat és kérdéseket használja. Ez a megközelítés segít a legjobb eredmények eléréséhez, különösen ha száznál kevesebb példa van.

Példa fájlformátumra

{"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."}]}

Többfordulós csevegési fájlformátum az Azure OpenAI-hoz

A JSONL-betanítási fájl egyetlen sorában több beszélgetés is támogatott. Ha nem szeretne finomhangolni bizonyos segédüzeneteken, adja hozzá az opcionális weight kulcs-érték párot. Jelenleg a következőre állítható be: weight0 vagy 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital/major city 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}]}

Csevegés befejezése látással

{"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."}]}

Az adathalmaz méretének szempontjai

Minél több betanítási példa van, annál jobb. A finomhangolási feladatok nem folytatódnak legalább 10 betanítási példa nélkül, de ez a kis szám nem elegendő a modellválaszok észrevehető befolyásolásához. A sikeres finomhangolás ajánlott eljárása több száz, ha nem ezres számú betanítási példa biztosítása. Javasoljuk, hogy 50 jól kidolgozott példával kezdje.

Általánosságban elmondható, hogy az adathalmaz méretének megduplázása lineáris modellminőség-növekedéshez vezethet. Ne feledje azonban, hogy az alacsony minőségű példák negatív hatással lehetnek a teljesítményre. Ha nagy mennyiségű belső adaton tanítja be a modellt anélkül, hogy először kiszűrné csak a legmagasabb minőségű példákat, a modell a vártnál rosszabb teljesítményt érhet el.

Finomhangolt modell létrehozása

Az Foundry portál egy finomhangolt modell létrehozása párbeszédpanelt biztosít, amellyel egy helyen hozhat létre és taníthat be egy finomhangolt modellt az Azure-erőforráshoz.

  1. Lépjen az Foundry portálra , és jelentkezzen be olyan hitelesítő adatokkal, amelyek hozzáférnek az Azure OpenAI-erőforráshoz. A bejelentkezési munkafolyamat során válassza ki a megfelelő könyvtárat, Azure-előfizetést és Azure OpenAI-erőforrást.

  2. Nyissa meg az Eszközök>finomhangolása lehetőséget, majd válassza a Modell finomhangolása lehetőséget.

    Képernyőkép egyéni modell létrehozására szolgáló lehetőségekről az Foundry portálon.

  3. Válasszon ki egy modellt a finomhangolásához, majd válassza a Tovább gombot.

    Képernyőkép a modell kiválasztásáról az Foundry portálon.

    Megjelenik a finomhangolt modell létrehozása párbeszédpanel.

    Képernyőkép a finomhangolt modell létrehozására szolgáló párbeszédpanelről.

A betanítási módszer kiválasztása

Az első lépés a modell kiválasztásának és a betanítási módszernek a megerősítése. Nem minden modell támogatja az összes betanítási módszert.

A modell kiválasztásakor egy korábban finomhangolt modellt is kiválaszthat, a cikk későbbi részében leírtak szerint.

Válassza ki a betanítás típusát

Az Foundry három képzési szintet kínál az ügyfelek igényeinek megfelelően.

Standard betanítási szint

A Standard szint dedikált kapacitást biztosít a finomhangoláshoz kiszámítható teljesítménnyel és SLA-kkal. Ideális olyan éles munkaterhelésekhez, amelyek garantált átviteli sebességet igényelnek.

Global Standard képzési szint

A globális képzési szint a többi globális ajánlat megfizethetőbb díjszabásával bővíti a modell testreszabásának elérését. Nem kínál adattárolást. Ha adattárolásra van szüksége, tekintse meg a kiválasztott modellhez elérhető régiók listáját .

Előfordulhat, hogy a betanítási adatok és az eredményként kapott modellsúlyok átmásolhatók egy másik Azure-régióba.

Ha ezt a szintet használja, a következőt teheti:

  • A legújabb OpenAI-modellek betanítása több mint egy tucat Azure OpenAI-régióból.
  • Élvezheti az alacsonyabb tokenenkénti betanítási arány előnyeit a standard szinthez képest.

Fejlesztői képzési szint

A fejlesztői szint költséghatékony megoldás, amely tétlen kapacitást használ a nem sürgős vagy feltáró számítási feladatokhoz. Az ebben a rétegben lévő feladatok megszakíthatók és később folytathatók, ezért ideálisak kísérletezésre és költségérzékeny használati esetekhez.

A betanítási adatok kiválasztása

A következő lépés a meglévő előkészített betanítási adatok kiválasztása, vagy új előkészített betanítási adatok feltöltése a modell testreszabásakor a Betanítási adatok hozzáadása lehetőség kiválasztásával.

A Betanítási adatok párbeszédpanel megjeleníti a meglévő, korábban feltöltött adatkészleteket. Emellett új betanítási adatok feltöltésére is lehetőséget biztosít.

Képernyőkép az Öntödei portál betanítási adatainak paneljéről

  • Ha a betanítási adatok már fel vannak töltve a szolgáltatásba, válassza a Csatlakoztatott AI-erőforrás Fájljai elemét. Ezután válassza ki a fájlt a legördülő listából.

  • Új betanítási adatok feltöltéséhez használja az alábbi lehetőségek egyikét:

    • Válassza a Fájlok feltöltése lehetőséget a betanítási adatok helyi fájlból való feltöltéséhez.
    • Az Azure Blob vagy más megosztott webhelyek kiválasztásával betanítási adatokat importálhat az Azure Blob Storage-ból vagy más megosztott webhelyről.

Nagy adatfájlok esetén javasoljuk, hogy importálja a Blob Storage-ból. A nagyméretű fájlok instabillá válhatnak, ha többrészes űrlapokon keresztül tölti fel őket, mert a kérések atomiak, és nem lehet újrapróbálkozást vagy folytatást folytatni. További információ a Blob Storage-ról: Mi az Az Azure Blob Storage?

Az érvényesítési adatok kiválasztása (nem kötelező)

Ha rendelkezik érvényesítési adatkészletekkel, válassza a Betanítási adatok hozzáadása lehetőséget. Kiválaszthatja a meglévő előkészített érvényesítési adatokat, vagy feltölthet új előkészített érvényesítési adatokat, amelyeket a modell testreszabásakor használ.

Az Érvényesítési adatok párbeszédpanel megjeleníti a meglévő, korábban feltöltött betanítási és érvényesítési adatkészleteket. Emellett új érvényesítési adatok feltöltésére is lehetőséget biztosít.

Képernyőkép az Érvényesítési adatok panelről az Foundry portálon.

  • Ha az érvényesítési adatok már feltöltődtek a szolgáltatásba, válassza az Adathalmaz kiválasztása lehetőséget. Ezután válassza ki a fájlt a legördülő listából.

  • Új érvényesítési adatok feltöltéséhez használja az alábbi lehetőségek egyikét:

    • Válassza a Helyi fájl lehetőséget az érvényesítési adatok helyi fájlból való feltöltéséhez.
    • Válassza az Azure Blob vagy más megosztott webhelyek lehetőséget az érvényesítési adatok Azure Blob Storage-ból vagy más megosztott webhelyről való importálásához.

Nagy adatfájlok esetén javasoljuk, hogy importálja a Blob Storage-ból. A nagyméretű fájlok instabillá válhatnak, ha többrészes űrlapokon keresztül tölti fel őket, mert a kérések atomiak, és nem lehet újrapróbálkozást vagy folytatást folytatni.

A modell azonosíthatóvá tétele (nem kötelező)

Javasoljuk, hogy adjon meg egy paramétert suffix , amely könnyebben megkülönbözteti a finomhangolt modell iterációit. Egy suffix paraméter legfeljebb 18 karakter hosszúságú sztringet használ, és az eredményül kapott finomhangolt modell elnevezésére szolgál.

Betanítási paraméterek konfigurálása (nem kötelező)

Megadhat egy választható magot , és további hiperparamétereket hangolhat.

Egy mag szabályozza a feladat reprodukálhatóságát. Az azonos vetőmag- és feladatparaméterek átadása ugyanazokat az eredményeket eredményezi, de ritka esetekben eltérhet. Ha nem ad meg magot, a rendszer véletlenszerűen generál egy magot.

Képernyőkép a magok és hiperparaméterek konfigurálására szolgáló területről az Foundry portálon.

A következő hiperparaméterek érhetők el a hangoláshoz az Foundry portálon keresztül:

Név Típus Leírás
Batch-méret Egész szám A betanításhoz használandó csoportméret. A batch mérete azoknak a betanítási példáknak a száma, amelyeket egyetlen előre- és hátrameneti lépés során használnak fel a tanításhoz. Általánosságban elmondható, hogy a nagyobb kötegméretek általában jobban működnek a nagyobb adathalmazok esetében.

A tulajdonság alapértelmezett értéke és maximális értéke egy alapmodellre vonatkozik. A nagyobb kötegméret azt jelenti, hogy a modellparaméterek ritkábban, de alacsonyabb varianciával frissülnek.
Tanulási sebesség szorzója Szám A betanításhoz használandó tanulási sebesség szorzója. A finomhangolási tanulási ráta az előzetes betanításhoz használt eredeti tanulási ráta, ezzel az értékkel szorozva.

A nagyobb tanulási sebességek általában jobban teljesítenek a nagyobb batchméretekkel. Javasoljuk, hogy kísérletezzen a 0,02 és 0,2 közötti értékekkel, hogy lássa, mi okozza a legjobb eredményt. A túlillesztés elkerülése érdekében hasznos lehet a kisebb tanulási arány.
A korszakok száma Egész szám A modell betanításához szükséges epochák száma. A korszak egy teljes ciklusra utal a betanítási adathalmazon keresztül.

Automatikus üzembe helyezés engedélyezése (nem kötelező)

Az időmegtakarítás érdekében opcionálisan engedélyezheti az automatikus üzembe helyezést az eredményül kapott modellhez. Ha a betanítás sikeresen befejeződik, a modell a kiválasztott üzembe helyezési típusnak megfelelően lesz üzembe helyezve. A telepítés neve az egyéni modelledhez létrehozott egyedi néven és az általad korábban megadott opcionális utótagon alapul.

Képernyőkép az automatikus üzembe helyezés kapcsolójáról az Foundry portálon.

Megjegyzés:

Jelenleg csak a Global Standard és a Developer telepítések támogatottak az automatikus üzembe helyezéshez. Ezek közül egyik sem biztosít adattárolást. További információkért tekintse meg az üzembe helyezési típusok dokumentációját.

A lehetőségek áttekintése és a modell betanítása

Tekintse át a lehetőségeket, majd válassza a Küldés lehetőséget az új, finomhangolt modell betanításának megkezdéséhez.

Az egyéni modell állapotának ellenőrzése

A finomhangolási feladat elküldése után megjelenik egy lap a finomhangolt modell részleteivel. A finomhangolt modell állapotát és további információját az Foundry portál finomhangolási oldalán találja.

Előfordulhat, hogy a feladat várólistára kerül a rendszerben lévő többi feladat mögött. A modell betanítása a modell és az adathalmaz méretétől függően perceket vagy órákat is igénybe vehet.

Ellenőrzőpontok létrehozása

Amikor minden betanítási korszak befejeződik, létrejön egy ellenőrzőpont. Az ellenőrzőpont egy modell teljes funkcionalitású verziója, amely üzembe helyezhető és célmodellként is használható a későbbi finomhangolási feladatokhoz.

Az ellenőrzőpontok különösen hasznosak lehetnek, mert a túlillesztés előtt pillanatképeket biztosíthatnak. Amikor egy finomhangolási feladat befejeződik, a modell három legújabb verziója érhető el az üzembe helyezéshez. A REST API-val ellenőrzőpontokat másolhat az erőforrások és az előfizetések között.

Szüneteltetés és folytatás

A Foundry portál mindkét nézeteiben nyomon követheti a finomhangolás előrehaladását. A feladat ugyanazokon az állapotokon megy keresztül, mint a normál finomhangolási feladatok (queued, Running, Succeeded).

Az eredmények fájljait a tanulási folyamat során is áttekintheti, hogy betekintsen a folyamatba, és hogy a tanulás várakozásoknak megfelelően halad-e.

A betanítás során megtekintheti a metrikákat, és szükség szerint szüneteltetheti a feladatot. A szüneteltetés akkor lehet hasznos, ha a metrikák nem konvergensek, vagy ha úgy érzi, hogy a modell nem a megfelelő ütemben tanul. Ha szüneteltet egy betanítási feladatot, a biztonsági értékelések befejezése után létrejön egy üzembe helyezhető ellenőrzőpont. Ez az ellenőrzőpont az Ön számára elérhető, hogy üzembe helyezze és inferencia céljából használja, vagy folytathatja a feladatot annak befejezéséhez. A szüneteltetési művelet csak olyan feladatokra alkalmazható, amelyek legalább egy lépésre be vannak tanítva, és futó állapotban vannak.

Képernyőkép a megerősítés finomhangolásáról egy futó feladattal.

Az egyéni modell elemzése

Az Azure OpenAI minden finomhangolási feladathoz csatol egy eredményfájlt results.csv a befejezés után. Az eredményfájl használatával elemezheti az egyéni modell betanítási és érvényesítési teljesítményét. Az eredményfájl fájlazonosítója minden egyéni modellhez megjelenik az Eredmény fájlazonosító oszlopban az Foundry portál Modellek paneljén. A fájlazonosítóval azonosíthatja és letöltheti az eredményfájlt az Foundry portál Adatfájlok paneljéről.

Az eredményfájl egy CSV-fájl, amely egy fejlécsort és egy sort tartalmaz minden betanítási lépéshez, amelyet a finomhangolási feladat hajt végre. Az eredményfájl a következő oszlopokat tartalmazza:

Oszlop név Leírás
step A betanítási lépés száma. A betanítási lépés egy betanítási adatköteg egyetlen áthaladását, előre- és hátralépését jelöli.
train_loss A tanulási csomag vesztesége.
train_mean_token_accuracy A modell által helyesen előrejelzett tokenek százalékos aránya a betanítási kötegben.

Például, ha a köteg mérete 3 értékre van állítva, és az adatok befejezéseket [[1, 2], [0, 5], [4, 2]] tartalmaznak, akkor ez az érték 0.83 (6 közül 5) értékre van beállítva, ha a modell [[1, 1], [0, 5], [4, 2]]-t előrejelzi.
valid_loss Az érvényesítési csomag vesztesége.
validation_mean_token_accuracy A modell által helyesen előrejelzett validációs tétel tokenjeinek százalékos aránya.

Például, ha a köteg mérete 3 értékre van állítva, és az adatok befejezéseket [[1, 2], [0, 5], [4, 2]] tartalmaznak, akkor ez az érték 0.83 (6 közül 5) értékre van beállítva, ha a modell [[1, 1], [0, 5], [4, 2]]-t előrejelzi.
full_valid_loss Az egyes korszakok végén kiszámított érvényesítési veszteség. Ha a betanítás jól megy, a veszteségnek csökkennie kell.
full_valid_mean_token_accuracy Az érvényes átlagos tokenpontosság, amelyet az egyes epochák végén számítunk ki. Ha a tréning jól halad, a token pontosságának növekednie kell.

A fájlban lévő results.csv adatokat ábrázolásként is megtekintheti az Foundry portálon. A betanított modell hivatkozásának kiválasztásakor három diagram jelenik meg: veszteség, átlagos token pontosság és token pontosság. Ha érvényesítési adatokat adott meg, mindkét adatkészlet ugyanazon a diagramon jelenik meg.

Figyelje meg, hogy a veszteség idővel csökkenni fog, és a pontosság növekedni fog. Ha a betanítási és érvényesítési adatok eltérnek, előfordulhat, hogy túlillesztés következik be. Próbálja ki a betanítást kevesebb korszakmal vagy kisebb tanulási sebesség-szorzóval.

Finomhangolt modell üzembe helyezése

Ha elégedett a finomhangolási feladat metrikáival, vagy csak tovább szeretne lépni a következtetésre, telepítenie kell a modellt.

Ha további validálás céljából helyez üzembe, fontolja meg a tesztelést egy fejlesztői üzembe helyezéssel.

Ha készen áll az éles üzembe helyezésre, vagy adott adattárolási igényei vannak, kövesse az üzembe helyezési útmutatót.

Üzembe helyezett, finomhangolt modell használata

A finomhangolt modell üzembe helyezése után a többi üzembe helyezett modellhez hasonlóan használhatja. A Foundryben található játszótéren kísérletezhet az új üzembe helyezéssel. A REST API-val a saját alkalmazásból is meghívhatja a finomhangolt modellt. Ezt az új, finomhangolt modellt a parancssori folyamatban is használhatja a generatív AI-alkalmazás létrehozásához.

Megjegyzés:

Csevegőmodellek esetén a finomhangolt modell irányításához használt rendszerüzenetnek (legyen az üzembe helyezve vagy a játszótéren való teszteléshez elérhető) meg kell egyeznie a betanításhoz használt rendszerüzenettel. Ha másik rendszerüzenetet használ, előfordulhat, hogy a modell nem a várt módon működik.

Folyamatos finomhangolás végrehajtása

A finomhangolt modell létrehozása után érdemes lehet a további finomhangolással tovább finomítani a modellt. A folyamatos finomhangolás egy már finomhangolt modell alapmodellként való kiválasztásának és az új betanítási példák további finomhangolásának iteratív folyamata.

A korábban finomhangolt modell finomhangolásához használja a finomhangolt modell létrehozása című cikkben ismertetett eljárást. Az általános alapmodell nevének megadása helyett azonban a már finomhangolt modellt kell megadnia. Az egyéni finomhangolt modell gpt-4o-2024-08-06.ft-d93dda6110004b4da3472d96f4dd4777-ft így néz ki.

Képernyőkép az egyéni modell létrehozásához használt felületről, kiemelve egy finomhangolt modellt.

Az üzemelő példányokat, az egyéni modelleket és a betanításhoz használt fájlokat tisztítsa meg.

Ha már nincs szüksége az egyéni modellre, törölheti az üzembe helyezést és a modellt. Szükség esetén törölheti a szolgáltatásba feltöltött betanítási és érvényesítési fájlokat is.

A modell üzembe helyezésének törlése

Fontos

Ha egy testreszabott modell üzembe helyezése után az üzembe helyezés 15 napnál hosszabb ideig inaktív marad, a rendszer törli az üzembe helyezést. A testreszabott modell üzembe helyezése inaktív, ha a modell több mint 15 nappal ezelőtt lett üzembe helyezve, és egyetlen csevegésbefejezés vagy válasz API-hívást sem hajtottak végre a folyamatos 15 napos időszak során.

Az inaktív üzemelő példány törlése nem törli vagy befolyásolja az alapul szolgáló testreszabott modellt. A testre szabott modell bármikor újra üzembe helyezhető.

Az Azure OpenAI a Microsoft Foundry Models díjszabásában leírtak szerint az üzembe helyezett minden testre szabott (finomhangolt) modell óránkénti üzemeltetési költséget okoz, függetlenül attól, hogy a modellen csevegések vagy válasz API-hívások vannak-e. Az Azure OpenAI költségeinek tervezésével és kezelésével kapcsolatos további információkért lásd: Az Azure OpenAI költségeinek megtervezése és kezelése.

Az egyéni modell üzembe helyezését az Foundry portál Üzembe helyezések panelén törölheti. Jelölje ki a törölni kívánt üzembe helyezést, majd válassza a Törlés lehetőséget.

Az egyéni modell törlése

Az Öntödei portál Modellek paneljén törölheti az egyéni modellt. Válassza ki a törölni kívánt egyéni modellt a Testreszabott modellek lapon, majd válassza a Törlés lehetőséget.

Megjegyzés:

Ha már rendelkezik üzembe helyezéssel, nem törölhet egyéni modellt. Az egyéni modell törlése előtt először törölnie kell a modell üzembe helyezését.

Betanítási fájlok törlése

A betanításhoz feltöltött betanítási és érvényesítési fájlokat, valamint a betanítás során létrehozott eredményfájlokat is törölheti az Foundry portál Felügyeleti>adatok + indexek paneljén. Jelölje ki a törölni kívánt fájlt, majd válassza a Törlés lehetőséget.

Előfeltételek

Támogatott modellek

Annak ellenőrzéséhez, hogy mely régiók támogatják jelenleg a finomhangolást, tekintse meg a modellekről szóló cikket.

Vagy finomhangolhat egy korábban finomhangolt modellt, amely a következő formátumban van: base-model.ft-{jobid}.

A Python SDK munkafolyamatának áttekintése

Szánjon egy kis időt a Python SDK Azure OpenAI-val való használatára vonatkozó finomhangolási munkafolyamat áttekintésére:

  1. A betanítási és érvényesítési adatok előkészítése.
  2. Válasszon egy alapmodellt.
  3. Töltse fel a betanítási adatokat.
  4. Betanítsa az új testreszabott modellt.
  5. Ellenőrizze a testreszabott modell állapotát.
  6. A testre szabott modell üzembe helyezése használatra.
  7. Használja a testre szabott modellt.
  8. Igény szerint elemezheti a testre szabott modellt a teljesítmény és az illesztés szempontjából.

A betanítási és érvényesítési adatok előkészítése

A betanítási és érvényesítési adatkészletek bemeneti és kimeneti példákból állnak, amelyekből megtudhatja, hogyan szeretné végrehajtani a modellt.

A használt betanítási és érvényesítési adatokat JSON Lines (JSONL) dokumentumként kell formázni. A Csevegés befejezése API által használt beszélgetési formátumot is meg kell formázni.

A JSONL formátumon kívül a betanítási és érvényesítési adatfájlokat UTF-8-ban kell kódolni, és tartalmaznia kell egy bájtsorrendjelet (BOM). Minden fájlnak 512 MB-nál kisebb méretűnek kell lennie.

Ha részletes útmutatót szeretne a finomhangolásról gpt-4o-mini-2024-07-18, tekintse meg az Azure OpenAI finomhangolási oktatóanyagát.

Példa fájlformátumra

{"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."}]}

Többfordulós beszélgetési fájlformátum

A JSONL-betanítási fájl egyetlen sorában több beszélgetés is támogatott. Ha nem szeretne finomhangolni bizonyos segédüzeneteken, adja hozzá az opcionális weight kulcs-érték párot. Jelenleg a következőre állítható be: weight0 vagy 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital/major city 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}]}

Csevegés befejezése látással

{"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."}]}

Betanítási és érvényesítési adatkészletek létrehozása

Minél több betanítási példa van, annál jobb. A finomhangolási feladatok nem folytatódnak legalább 10 betanítási példa nélkül, de ez a kis szám nem elegendő a modellválaszok észrevehető befolyásolásához. A sikeres finomhangolás ajánlott eljárása több száz, ha nem ezres számú betanítási példa biztosítása.

Általánosságban elmondható, hogy az adathalmaz méretének megduplázása lineáris modellminőség-növekedéshez vezethet. Ne feledje azonban, hogy az alacsony minőségű példák negatív hatással lehetnek a teljesítményre. Ha nagy mennyiségű belső adaton tanítja be a modellt anélkül, hogy először kiszűrné csak a legmagasabb minőségű példákat, a modell a vártnál rosszabb teljesítményt érhet el.

Betanítási adatok feltöltése

A következő lépés a meglévő előkészített betanítási adatok kiválasztása, vagy új előkészített betanítási adatok feltöltése a modell testreszabása során. A betanítási adatok előkészítése után feltöltheti fájljait a szolgáltatásba. A betanítási adatok kétféleképpen tölthetők fel:

Nagy adatfájlok esetén javasoljuk, hogy importálja a Blob Storage-ból. A nagyméretű fájlok instabillá válhatnak, ha többrészes űrlapokon keresztül tölti fel őket, mert a kérések atomiak, és nem lehet újrapróbálkozást vagy folytatást folytatni. További információ a Blob Storage-ról: Mi az Az Azure Blob Storage?

Az alábbi Python-példa feltölti a helyi betanítási és érvényesítési fájlokat a Python SDK használatával, és lekéri a visszaadott fájlazonosítókat:

import os
from openai import OpenAI

# Load the OpenAI client
client = OpenAI(
  api_key = os.getenv("AZURE_OPENAI_API_KEY"),  
  base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
)

# Upload the training and validation dataset files to Microsoft Foundry with the SDK.
training_file_name = 'training_set.jsonl'
validation_file_name = 'validation_set.jsonl'

training_response = client.files.create(file=open(training_file_name, "rb"), purpose="fine-tune")
validation_response = client.files.create(file=open(validation_file_name, "rb"), purpose="fine-tune")
training_file_id = training_response.id
validation_file_id = validation_response.id

print("Training file ID:", training_file_id)
print("Validation file ID:", validation_file_id)

Testreszabott modell létrehozása

Miután feltöltötte a betanítási és érvényesítési fájlokat, készen áll a finomhangolási feladat elindítására.

Az alábbi Python-kód egy példát mutat be arra, hogyan hozhat létre új finomhangolási feladatot a Python SDK használatával:

response = client.fine_tuning.jobs.create(
    training_file=training_file_id,
    validation_file=validation_file_id,
    model="gpt-4.1-2025-04-14", # Enter the base model name.
    suffix="my-model", # Custom suffix for naming the resulting model. Note that in Microsoft Foundry, the model can't contain dot/period characters.
    seed=105, # Seed parameter controls reproducibility of the fine-tuning job. If you don't specify a seed, one is generated automatically.
    extra_body={ "trainingType": "GlobalStandard" } # Change this value to your preferred training type. Other options are `Standard` and `Developer`.
)

job_id = response.id

# You can use the job ID to monitor the status of the fine-tuning job.
# The fine-tuning job takes some time to start and finish.

print("Job ID:", response.id)
print(response.model_dump_json(indent=2))

Megjegyzés:

Javasoljuk, hogy a global standard szintet használja a betanítási típushoz, mivel költségmegtakarítást biztosít, és globális kapacitást használ a gyorsabb sorbaállási időkhez. Azonban az aktuális erőforrásterületen kívül másolja az adatokat és a súlyokat. Ha az adatrezidencia követelmény, használjon egy modellt, amely támogatja a standard szintű betanítást.

További opcionális paramétereket is átadhat, például hiperparamétereket, hogy jobban kézben tarthassa a finomhangolási folyamatot. Az első betanításhoz javasoljuk, hogy a paraméterek megadása nélkül jelen lévő automatikus alapértelmezett értékeket használja.

A felügyelt finomhangoláshoz jelenleg támogatott hiperparaméterek a következők:

Név Típus Leírás
batch_size Egész szám A betanításhoz használandó csoportméret. A batch mérete azoknak a betanítási példáknak a száma, amelyeket egyetlen előre- és hátrameneti lépés során használnak fel a tanításhoz. Általánosságban elmondható, hogy a nagyobb kötegméretek általában jobban működnek a nagyobb adathalmazok esetében.

A tulajdonság alapértelmezett értéke és maximális értéke egy alapmodellre vonatkozik. A nagyobb kötegméret azt jelenti, hogy a modellparaméterek ritkábban, de alacsonyabb varianciával frissülnek.
learning_rate_multiplier Szám A betanításhoz használandó tanulási sebesség szorzója. A finomhangolási tanulási ráta az előzetes betanításhoz használt eredeti tanulási ráta, ezzel az értékkel szorozva.

A nagyobb tanulási sebességek általában jobban teljesítenek a nagyobb batchméretekkel. Javasoljuk, hogy kísérletezzen 0.02 és 0.2 közötti értékekkel, hogy lássa, mi hozza a legjobb eredményt. A túlillesztés elkerülése érdekében hasznos lehet a kisebb tanulási arány.
n_epochs Egész szám A modell betanításához szükséges epochák száma. A korszak egy teljes ciklusra utal a betanítási adathalmazon keresztül.
seed Egész szám A feladat reprodukálhatóságát szabályozó mag. Az azonos vetőmag- és feladatparaméterek átadása ugyanazokat az eredményeket eredményezi, de ritka esetekben eltérhet. Ha nem ad meg magot, akkor a rendszer automatikusan létrehoz egyet önnek.

Ha egyéni hiperparamétereket szeretne beállítani az OpenAI Python API 1.x verziójával, adja meg őket a következők methodrészeként:

client.fine_tuning.jobs.create(
  training_file="file-abc123", 
  model="gpt-4.1-2025-04-14",
  suffix="my-model",
  seed=105,
  method={
    "type": "supervised", # In this case, the job is using supervised fine-tuning.
    "supervised": {
      "hyperparameters": {
        "n_epochs": 2
      }
    }
  },
  extra_body={ "trainingType": "GlobalStandard" }
)

A többi testreszabási módszer támogatott hiperparamétereinek megismeréséhez tekintse meg a közvetlen preferenciális optimalizálás útmutatóját és a megerősítés finomhangolását ismertető útmutatót.

Betanítás típusa

Válassza ki a képzési szintet a használati eset és a költségvetés alapján:

  • Standard: A betanítás az aktuális Foundry-erőforrás régiójában történik, és garantálja az adatok tárolását. Ideális olyan számítási feladatokhoz, ahol az adatoknak egy adott régióban kell maradniuk.

  • Globális: A Standardhoz képest megfizethetőbb díjszabást biztosít a jelenlegi régión túli kapacitás használatával. A rendszer az adatokat és a súlyokat arra a régióra másolja, ahol a betanítás történik. Ideális, ha az adatlakóhely nem korlátozás, vagy gyorsabb sorba állítási időket szeretne.

  • Fejlesztő (előzetes verzió): Jelentős költségmegtakarítást biztosít a kihasználatlan kapacitás képzésre való használatával. Nincs késési vagy SLA-garancia, ezért előfordulhat, hogy az ebben a rétegben lévő feladatok automatikusan elő vannak állítva, és később újraindulnak. Az adatmegőrzési helyre sincs garancia. Ideális kísérletezéshez és árérzékeny számítási feladatokhoz.

import openai
from openai import AzureOpenAI

base_uri = "https://<ACCOUNT-NAME>.services.ai.azure.com"
api_key = "<API-KEY>"
api_version = "2025-04-01-preview"
client = AzureOpenAI(
azure_endpoint=base_uri,
api_key=api_key,
api_version=api_version
)
try:
    client.fine_tuning.jobs.create(
    model="gpt-4.1-mini",
    training_file="<FILE-ID>",
    extra_body={"trainingType": "developerTier"}
    )
except openai.APIConnectionError as e:
    print("The server could not be reached")
    print(e.__cause__) # An underlying exception, likely raised within httpx.
except openai.RateLimitError as e:
    print("A 429 status code was received; we should back off a bit.")
except openai.APIStatusError as e:
    print("Another non-200-range status code was received")
    print(e.status_code)
    print(e.response)
    print(e.body)

A finomhangolási feladat állapotának ellenőrzése

response = client.fine_tuning.jobs.retrieve(job_id)

print("Job ID:", response.id)
print("Status:", response.status)
print(response.model_dump_json(indent=2))

Események finomhangolásának listázása

A betanítás során létrehozott egyéni finomhangolási események vizsgálatához futtassa a következő parancsot. A parancs futtatása előtt előfordulhat, hogy frissítenie kell az OpenAI-ügyfélkódtárat a legújabb verzióra a használatával 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))

Ellenőrzőpontok listázása

Az egyes betanítási korszakok elvégzése ellenőrzőpontot hoz létre. Az ellenőrzőpont egy modell teljes funkcionalitású verziója, amely üzembe helyezhető és célmodellként is használható a későbbi finomhangolási feladatokhoz. Az ellenőrzőpontok különösen hasznosak lehetnek, mert a túlillesztés előtt pillanatképeket biztosíthatnak.

Amikor egy finomhangolási feladat befejeződik, a modell három legújabb verziója érhető el az üzembe helyezéshez. A finomhangolt modell az utolsó korszakot jelöli. Az előző két fázis ellenőrzőpontokként érhetők el.

Az alábbi parancs futtatásával lekérheti az egyes finomhangolási feladatokhoz társított ellenőrzőpontok listáját. A parancs futtatása előtt előfordulhat, hogy frissítenie kell az OpenAI-ügyfélkódtárat a legújabb verzióra a használatával pip install openai --upgrade.

response = client.fine_tuning.jobs.checkpoints.list(job_id)
print(response.model_dump_json(indent=2))

A testre szabott modell elemzése

Az Azure OpenAI minden finomhangolási feladathoz csatol egy eredményfájlt results.csv a befejezés után. Az eredményfájl használatával elemezheti a testre szabott modell betanítási és érvényesítési teljesítményét. Az eredményfájl fájlazonosítója minden testre szabott modell esetében megjelenik. A Python SDK-val lekérheti a fájlazonosítót, és letöltheti az eredményfájlt elemzésre.

Az alábbi Python-példa lekéri a testre szabott modell finomhangolási feladatához csatolt első eredményfájl fájlazonosítóját. Ezután a Python SDK használatával tölti le a fájlt az aktuális munkakönyvtárba elemzés céljából.

# 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)

Az eredményfájl egy CSV-fájl, amely egy fejlécsort és egy sort tartalmaz minden betanítási lépéshez, amelyet a finomhangolási feladat hajt végre. Az eredményfájl a következő oszlopokat tartalmazza:

Oszlop név Leírás
step A betanítási lépés száma. A betanítási lépés egy betanítási adatköteg egyetlen áthaladását, előre- és hátralépését jelöli.
train_loss A tanulási csomag vesztesége.
train_mean_token_accuracy A modell által helyesen előrejelzett tokenek százalékos aránya a betanítási kötegben.

Például, ha a köteg mérete 3 értékre van állítva, és az adatok befejezéseket [[1, 2], [0, 5], [4, 2]] tartalmaznak, akkor ez az érték 0.83 (6 közül 5) értékre van beállítva, ha a modell [[1, 1], [0, 5], [4, 2]]-t előrejelzi.
valid_loss Az érvényesítési csomag vesztesége.
validation_mean_token_accuracy A modell által helyesen előrejelzett validációs tétel tokenjeinek százalékos aránya.

Például, ha a köteg mérete 3 értékre van állítva, és az adatok befejezéseket [[1, 2], [0, 5], [4, 2]] tartalmaznak, akkor ez az érték 0.83 (6 közül 5) értékre van beállítva, ha a modell [[1, 1], [0, 5], [4, 2]]-t előrejelzi.
full_valid_loss Az egyes korszakok végén kiszámított érvényesítési veszteség. Ha a betanítás jól megy, a veszteségnek csökkennie kell.
full_valid_mean_token_accuracy Az érvényes átlagos tokenpontosság, amelyet az egyes epochák végén számítunk ki. Ha a tréning jól halad, a token pontosságának növekednie kell.

A fájlban lévő results.csv adatokat ábrázolásként is megtekintheti a Microsoft Foundry portálon. A betanított modell hivatkozásának kiválasztásakor három diagram jelenik meg: veszteség, átlagos token pontosság és token pontosság. Ha érvényesítési adatokat adott meg, mindkét adatkészlet ugyanazon a diagramon jelenik meg.

Figyelje meg, hogy a veszteség idővel csökkenni fog, és a pontosság növekedni fog. Ha a betanítási és érvényesítési adatok eltérnek, előfordulhat, hogy túlillesztés következik be. Próbálja ki a betanítást kevesebb korszakmal vagy kisebb tanulási sebesség-szorzóval.

Finomhangolt modell üzembe helyezése

Ha elégedett a finomhangolási feladat metrikáival, vagy csak tovább szeretne lépni a következtetésre, telepítenie kell a modellt.

Ha további validálás céljából helyez üzembe, fontolja meg a tesztelést egy fejlesztői üzembe helyezéssel.

Az előző SDK-parancsokkal ellentétben az üzembe helyezéshez a vezérlősík API-ját kell használnia. Ehhez a feladathoz külön engedélyezésre, egy másik API-elérési útra és egy másik API-verzióra van szükség.

Variable Definíció
token Egy engedélyezési jogkivonat. Az engedélyezési tokenek többféleképpen is létrehozhatók. A kezdeti tesztelés legegyszerűbb módja az Azure Cloud Shell megnyitása az Azure Portalról. Ez után futtassa a az account get-access-token parancsot. Ezt a jogkivonatot használhatja ideiglenes engedélyezési jogkivonatként API-teszteléshez. Ajánljuk, hogy ezt a jelszóvektort egy új környezeti változóban tárolja.
subscription A társított Azure OpenAI-erőforrás előfizetés-azonosítója.
resource_group Az Azure OpenAI-erőforrás erőforráscsoportjának neve.
resource_name Az Azure OpenAI-erőforrás neve.
model_deployment_name Az új, finomhangolt modell telepítésének egyéni neve. Erre a névre hivatkozik a kód a csevegés befejező hívásai során.
fine_tuned_model A finomhangolt modell. Kérje le ezt az értéket a finomhangolási feladat eredményéből az előző lépésben. A következőhöz hasonlít: gpt-4.1-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83. Hozzá kell adnia az értéket a deploy_data JSON-hoz. Másik lehetőségként egy ellenőrzőpont üzembe helyezéséhez adja meg az ellenőrzőpont azonosítóját, amely a formátumban ftchkpt-e559c011ecc04fc68eaa339d8227d02djelenik meg.
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 use to reference the model when making inference calls.

deploy_params = {'api-version': "2024-10-01"} # Control plane API version rather than the data plane 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 looks 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())

A régiók közötti üzembe helyezésről és az üzembe helyezett modell használatáról további információt az üzembe helyezett, finomhangolt modell használata című témakörben talál.

Ha készen áll az éles üzembe helyezésre, vagy adott adattárolási igényei vannak, kövesse az üzembe helyezési útmutatót.

Folyamatos finomhangolás végrehajtása

A finomhangolt modell létrehozása után érdemes lehet a további finomhangolással tovább finomítani a modellt. A folyamatos finomhangolás egy már finomhangolt modell alapmodellként való kiválasztásának és az új betanítási példák további finomhangolásának iteratív folyamata. A folyamatos finomhangolás csak OpenAI-modellek esetén támogatott.

A korábban finomhangolt modell finomhangolásához ugyanazt a folyamatot kell használnia, amelyet a testreszabott modell létrehozása című cikkben ismertetett. Az általános alapmodell nevének megadása helyett azonban meg kell adnia a finomhangolt modell azonosítóját. A finomhangolt modell azonosítója a következőképpen gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7néz ki.

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 takes some time to start and finish.

print("Job ID:", response.id)
print("Status:", response.id)
print(response.model_dump_json(indent=2))

Azt is javasoljuk, hogy adja meg a paramétert a suffix finomhangolt modell iterációinak könnyebb megkülönböztetéséhez. A suffix paraméter egy sztringet vesz fel, és a finomhangolt modell azonosítására van beállítva. Az OpenAI Python API-val legfeljebb 18 karakter hosszúságú sztringet adhat hozzá a finomhangolt modell nevéhez.

Ha nem biztos a meglévő finomhangolt modell azonosítójában, ezeket az információkat a Microsoft Foundry Modellek lapján találja. Vagy létrehozhat modellek listáját egy Azure OpenAI-erőforráshoz a REST API használatával.

Tisztítsa meg a telepítéseket, a testreszabott modelleket és a betanítási fájlokat

Ha már nincs szüksége a testre szabott modellre, törölheti az üzembe helyezést és a modellt. Szükség esetén törölheti a szolgáltatásba feltöltött betanítási és érvényesítési fájlokat is.

A modell üzembe helyezésének törlése

Fontos

Ha egy testreszabott modell üzembe helyezése után az üzembe helyezés 15 napnál hosszabb ideig inaktív marad, a rendszer törli az üzembe helyezést. A testreszabott modell üzembe helyezése inaktív, ha a modell több mint 15 nappal ezelőtt lett üzembe helyezve, és egyetlen csevegésbefejezés vagy válasz API-hívást sem hajtottak végre a folyamatos 15 napos időszak során.

Az inaktív üzemelő példány törlése nem törli vagy befolyásolja az alapul szolgáló testreszabott modellt. A testre szabott modell bármikor újra üzembe helyezhető.

Az Azure OpenAI a Microsoft Foundry Models díjszabásában leírtak szerint az üzembe helyezett minden testre szabott (finomhangolt) modell óránkénti üzemeltetési költséget okoz, függetlenül attól, hogy a modellen csevegések vagy válasz API-hívások vannak-e. Az Azure OpenAI költségeinek tervezésével és kezelésével kapcsolatos további információkért lásd: Az Azure OpenAI költségeinek megtervezése és kezelése.

Az alábbi módszerek bármelyikével törölheti a testreszabott modell üzembe helyezését:

A testre szabott modell törlése

A testre szabott modellt a Foundry használatával törölheti.

Megjegyzés:

A testre szabott modellek nem törölhetők, ha már rendelkezik központi telepítéssel. A testre szabott modell törlése előtt törölnie kell a modell üzembe helyezését .

Betanítási fájlok törlése

Az Azure OpenAI-előfizetésből opcionálisan törölheti a betanításhoz feltöltött betanítási és érvényesítési fájlokat, valamint a betanítás során létrehozott eredményfájlokat. Az alábbi módszerekkel törölheti a betanítási, érvényesítési és eredményfájlokat:

Az alábbi Python-példa a Python SDK használatával törli a testre szabott modell betanítási, érvényesítési és eredményfájljait:

print('Checking for existing uploaded files.')
results = []

# Get the complete list of uploaded files in your subscription.
files = openai.File.list().data
print(f'Found {len(files)} total uploaded files in the subscription.')

# Enumerate all uploaded files. Extract the IDs for the
# files with file names that match your training dataset file and
# validation dataset file.
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 your files and delete each file.
print(f'Deleting already uploaded files.')
for id in results:
    openai.File.delete(sid = id)

Előfeltételek

Támogatott modellek

Annak ellenőrzéséhez, hogy mely régiók támogatják jelenleg a finomhangolást, tekintse meg a modellekről szóló cikket.

Vagy finomhangolhat egy korábban finomhangolt modellt, amely a következő formátumban van: base-model.ft-{jobid}.

A REST API munkafolyamatának áttekintése

Szánjon egy kis időt a REST API és a Python Azure OpenAI-val való használatára vonatkozó finomhangolási munkafolyamat áttekintésére:

  1. A betanítási és érvényesítési adatok előkészítése.
  2. Válasszon egy alapmodellt.
  3. Töltse fel a betanítási adatokat.
  4. Betanítsa az új testreszabott modellt.
  5. Ellenőrizze a testreszabott modell állapotát.
  6. A testre szabott modell üzembe helyezése használatra.
  7. Használja a testre szabott modellt.
  8. Igény szerint elemezheti a testre szabott modellt a teljesítmény és az illesztés szempontjából.

A betanítási és érvényesítési adatok előkészítése

A betanítási és érvényesítési adatkészletek bemeneti és kimeneti példákból állnak, amelyekből megtudhatja, hogyan szeretné végrehajtani a modellt.

A használt betanítási és érvényesítési adatokat JSON Lines (JSONL) dokumentumként kell formázni. A Csevegés befejezése API által használt beszélgetési formátumot is meg kell formázni.

A JSONL formátumon kívül a betanítási és érvényesítési adatfájlokat UTF-8-ban kell kódolni, és tartalmaznia kell egy bájtsorrendjelet (BOM). Minden fájlnak 512 MB-nál kisebb méretűnek kell lennie.

Ha részletes útmutatót szeretne a finomhangolásról gpt-4o-mini-2024-07-18, tekintse meg az Azure OpenAI finomhangolási oktatóanyagát.

Példa fájlformátumra

{"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."}]}

Többfordulós beszélgetési fájlformátum

A JSONL-betanítási fájl egyetlen sorában több beszélgetés is támogatott. Ha nem szeretne finomhangolni bizonyos segédüzeneteken, adja hozzá az opcionális weight kulcs-érték párot. Jelenleg a következőre állítható be: weight0 vagy 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital/major city 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}]}

Csevegés befejezése látással

{"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."}]}

Betanítási és érvényesítési adatkészletek létrehozása

Minél több betanítási példa van, annál jobb. A finomhangolási feladatok nem folytatódnak legalább 10 betanítási példa nélkül, de ez a kis szám nem elegendő a modellválaszok észrevehető befolyásolásához. A sikeres finomhangolás ajánlott eljárása több száz, ha nem ezres számú betanítási példa biztosítása.

Általánosságban elmondható, hogy az adathalmaz méretének megduplázása lineáris modellminőség-növekedéshez vezethet. Ne feledje azonban, hogy az alacsony minőségű példák negatív hatással lehetnek a teljesítményre. Ha nagy mennyiségű belső adaton tanítja be a modellt anélkül, hogy először kiszűrné csak a legmagasabb minőségű példákat, a modell a vártnál rosszabb teljesítményt érhet el.

Betanítási adatok feltöltése

A következő lépés a meglévő előkészített betanítási adatok kiválasztása, vagy új előkészített betanítási adatok feltöltése a modell testreszabása során. A betanítási adatok előkészítése után feltöltheti fájljait a szolgáltatásba. A betanítási adatok kétféleképpen tölthetők fel:

Nagy adatfájlok esetén javasoljuk, hogy importálja a Blob Storage-ból. A nagyméretű fájlok instabillá válhatnak, ha többrészes űrlapokon keresztül tölti fel őket, mert a kérések atomiak, és nem lehet újrapróbálkozást vagy folytatást folytatni. További információ a Blob Storage-ról: Mi az Az Azure Blob Storage?

Betanítási adatok feltöltése

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/files \
  -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"

Érvényesítési adatok feltöltése

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/files \
  -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"

Testreszabott modell létrehozása

Miután feltöltötte a betanítási és érvényesítési fájlokat, készen áll a finomhangolási feladat elindítására. Az alábbi kód egy példát mutat be arra, hogyan hozhat létre új finomhangolási feladatot a REST API használatával.

Ez a példa a magparaméter átadását is magában foglalja. A vetőmag szabályozza a feladat reprodukálhatóságát. Az azonos vetőmag- és feladatparaméterek átadása ugyanazokat az eredményeket eredményezi, de ritka esetekben eltérhet. Ha nem ad meg magot, akkor a rendszer automatikusan létrehoz egyet önnek.

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs \
  -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
}'

Ha egy olyan modellt finomhangol, amely támogatja a globális betanítást, megadhatja a betanítás típusát a extra_body nevű argumentum használatával, és a következőképpen: api-version=2025-04-01-preview.

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs?api-version=2025-04-01-preview \
  -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,
    "trainingType": "globalstandard"
}'

További opcionális paramétereket, például hiperparamétereket is átadhat a finomhangolási folyamat jobb szabályozásához. Az első betanításhoz javasoljuk, hogy a paraméterek megadása nélkül jelen lévő automatikus alapértelmezett értékeket használja.

A felügyelt finomhangoláshoz jelenleg támogatott hiperparaméterek a következők:

Név Típus Leírás
batch_size Egész szám A betanításhoz használandó csoportméret. A batch mérete azoknak a betanítási példáknak a száma, amelyeket egyetlen előre- és hátrameneti lépés során használnak fel a tanításhoz. Általánosságban elmondható, hogy a nagyobb kötegméretek általában jobban működnek a nagyobb adathalmazok esetében.

A tulajdonság alapértelmezett értéke és maximális értéke egy alapmodellre vonatkozik. A nagyobb kötegméret azt jelenti, hogy a modellparaméterek ritkábban, de alacsonyabb varianciával frissülnek.
learning_rate_multiplier Szám A betanításhoz használandó tanulási sebesség szorzója. A finomhangolási tanulási ráta az előzetes betanításhoz használt eredeti tanulási ráta, ezzel az értékkel szorozva.

A nagyobb tanulási sebességek általában jobban teljesítenek a nagyobb batchméretekkel. Javasoljuk, hogy kísérletezzen 0.02 és 0.2 közötti értékekkel, hogy lássa, mi hozza a legjobb eredményt. A túlillesztés elkerülése érdekében hasznos lehet a kisebb tanulási arány.
n_epochs Egész szám A modell betanításához szükséges epochák száma. A korszak egy teljes ciklusra utal a betanítási adathalmazon keresztül.
seed Egész szám A feladat reprodukálhatóságát szabályozó mag.

A többi testreszabási módszer támogatott hiperparamétereinek megismeréséhez tekintse meg a közvetlen preferenciális optimalizálás útmutatóját és a megerősítés finomhangolását ismertető útmutatót.

Betanítási típus kiválasztása

Válassza ki a képzési szintet a használati eset és a költségvetés alapján:

  • Standard: A betanítás az aktuális Foundry-erőforrás régiójában történik, és garantálja az adatok tárolását. Ideális olyan számítási feladatokhoz, ahol az adatoknak egy adott régióban kell maradniuk.

  • Globális: A Standardhoz képest megfizethetőbb díjszabást biztosít a jelenlegi régión túli kapacitás használatával. A rendszer az adatokat és a súlyokat arra a régióra másolja, ahol a betanítás történik. Ideális, ha az adatlakóhely nem korlátozás, vagy gyorsabb sorba állítási időket szeretne.

  • Fejlesztő (előzetes verzió): Jelentős költségmegtakarítást biztosít a kihasználatlan kapacitás képzésre való használatával. Nincs késési vagy SLA-garancia, ezért előfordulhat, hogy az ebben a rétegben lévő feladatok automatikusan elő vannak állítva, és később újraindulnak. Nincs adattárolási garancia sem. Ideális kísérletezéshez és árérzékeny számítási feladatokhoz.

curl -X POST "https://<ACCOUNT-NAME>.openai.azure.com/openai/fine_tuning/jobs?api-version=2025-04-01-preview" -H "Content-Type: application/json" -H "api-key: <API-KEY>" -d "{"model": "gpt-4.1", "training_file": "<FILE_ID>", "hyperparameters": {"prompt_loss_weight": 0.1}, "trainingType": "developerTier"}"

A testreszabott modell állapotának ellenőrzése

A finomhangolási feladat elindítása után egy ideig eltarthat a befejezése. Előfordulhat, hogy a feladat várólistára kerül a rendszerben lévő többi feladat mögött. A modell betanítása a modell és az adathalmaz méretétől függően perceket vagy órákat is igénybe vehet.

Az alábbi példa a REST API használatával ellenőrzi a finomhangolási feladat állapotát. A példa az előző példából visszaadott feladatazonosító használatával kéri le a feladat adatait.

curl -X GET $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/<YOUR-JOB-ID> \
  -H "api-key: $AZURE_OPENAI_API_KEY"

Események finomhangolásának listázása

A betanítás során létrehozott egyéni finomhangolási események vizsgálata:

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/events \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Ellenőrzőpontok listázása

Az egyes betanítási korszakok elvégzése ellenőrzőpontot hoz létre. Az ellenőrzőpont egy modell teljes funkcionalitású verziója, amely üzembe helyezhető és célmodellként is használható a későbbi finomhangolási feladatokhoz. Az ellenőrzőpontok különösen hasznosak lehetnek, mert a túlillesztés előtt pillanatképeket biztosíthatnak.

Amikor egy finomhangolási feladat befejeződik, a modell három legújabb verziója érhető el az üzembe helyezéshez. A finomhangolt modell az utolsó korszakot jelöli. Az előző két fázis ellenőrzőpontokként érhetők el.

Az alábbi parancs futtatásával lekérheti az egyes finomhangolási feladatokhoz társított ellenőrzőpontok listáját:

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Szüneteltetés és folytatás

A betanítás során megtekintheti a naplókat és a metrikákat, és szükség szerint szüneteltetheti a feladatot. A szüneteltetés akkor lehet hasznos, ha a metrikák nem konvergensek, vagy ha úgy érzi, hogy a modell nem a megfelelő ütemben tanul.

A betanítási feladat szüneteltetése és a biztonsági értékelések befejezése után létrejön egy üzembe helyezhető ellenőrzőpont. Ez az ellenőrzőpont az Ön számára elérhető, hogy üzembe helyezze és inferencia céljából használja, vagy folytathatja a feladatot annak befejezéséhez.

A szüneteltetési művelet csak olyan feladatokra alkalmazható, amelyek legalább egy lépésre be vannak tanítva, és futó állapotban vannak.

Szünet

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Önéletrajz

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Modell másolása (előzetes verzió)

Mostantól átmásolhat egy finomhangolt ellenőrzőponttal rendelkező modellt az egyik régióból a másikba, különböző előfizetések között, de ugyanazon a bérlőn belül. A folyamat dedikált API-kat használ a hatékony és biztonságos átvitel biztosításához. Ez a funkció jelenleg csak az API-val érhető el, az Foundry portálon keresztül nem.

Miután a modellt átmásolta az A régióból a B régióba, folyamatosan finomhangolhatja a modellt a B régióban, és innen telepítheti a modellt.

Megjegyzés:

A modell ellenőrzőpontjának törlése a forrásrégióban nem eredményezi a modell törlését a célrégióban. Ha a másolás után mindkét régióban törölni szeretné a modellt, minden régióban külön kell üzembe helyeznie a modellt.

Előfeltételek

  • A célerőforrásnak vagy -fióknak legalább egy finomhangolási feladatgal kell rendelkeznie.
  • A célerőforrás vagy -fiók nem tilthatja le a nyilvános hálózati hozzáférést (legalábbis a másolási kérelem elküldése közben).
  • Csak akkor másolhat a célfiókba, ha a másolatot kezdeményező fiók rendelkezik a célfiók eléréséhez szükséges engedélyekkel.

Engedélyek konfigurálása

  1. Felhasználó által hozzárendelt felügyelt identitás létrehozása.
  2. Adja meg az Azure AI-felhasználói szerepkört a felhasználó által hozzárendelt felügyelt identitásnak a célerőforráson vagy -fiókon.
  3. Rendelje hozzá a felhasználó által hozzárendelt felügyelt identitást a forráserőforrás-fiókhoz.

A modell másolása

curl --request POST \
  --url 'https://<aoai-resource>.openai.azure.com/openai/v1/fine_tuning/jobs/<ftjob>/checkpoints/<checkpoint-name>/copy' \
  --header 'Content-Type: application/json' \
  --header 'api-key: <api-key>' \
  --header 'aoai-copy-ft-checkpoints: preview' \
  --data '{
  "destinationResourceId": "<resourceId>",
  "region": "<region>"
}'

Mivel ez egy hosszú ideig futó művelet, ellenőrizze a finomhangolt modellpéldány állapotát a hívásban POST használt forrásfiók ellenőrzőpont-azonosítójának megadásával.

A másolás állapotának ellenőrzése

curl --request GET \
  --url 'https://<aoai-resource>.openai.azure.com//openai/v1/fine_tuning/jobs/<ftjob>/checkpoints/<checkpoint-name>/copy' \
  --header 'Content-Type: application/json' \
  --header 'api-key: <api-key>' \
  --header 'aoai-copy-ft-checkpoints: preview' 

Megjegyzés:

Ha egy ellenőrzőpontot egy forrásfiókból másol, ugyanaz az ellenőrzőpontnév marad meg a célfiókban. Győződjön meg arról, hogy pontosan ezt a nevet használja a célfiókban található finomhangoláshoz, üzembe helyezéshez vagy bármely más művelethez. Ez az ellenőrzőpont nem jelenik meg a felhasználói felületen vagy az list checkpoints API-ban.

A testre szabott modell elemzése

Az Azure OpenAI minden finomhangolási feladathoz csatol egy eredményfájlt results.csv a befejezés után. Az eredményfájl használatával elemezheti a testre szabott modell betanítási és érvényesítési teljesítményét. Az eredményfájl fájlazonosítója minden testre szabott modell esetében megjelenik. A REST API-val lekérheti a fájlazonosítót, és letöltheti az eredményfájlt elemzésre.

A következő Python-példa a REST API használatával kéri le a testre szabott modell finomhangolási feladatához csatolt első eredményfájl fájlazonosítóját. Ezután letölti a fájlt a munkakönyvtárba elemzés céljából.

curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/<JOB_ID>" \
  -H "api-key: $AZURE_OPENAI_API_KEY")
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/files/<RESULT_FILE_ID>/content" \
    -H "api-key: $AZURE_OPENAI_API_KEY" > <RESULT_FILENAME>

Az eredményfájl egy CSV-fájl, amely egy fejlécsort és egy sort tartalmaz minden betanítási lépéshez, amelyet a finomhangolási feladat hajt végre. Az eredményfájl a következő oszlopokat tartalmazza:

Oszlop név Leírás
step A betanítási lépés száma. A betanítási lépés egy betanítási adatköteg egyetlen áthaladását, előre- és hátralépését jelöli.
train_loss A tanulási csomag vesztesége.
train_mean_token_accuracy A modell által helyesen előrejelzett tokenek százalékos aránya a betanítási kötegben.

Például, ha a köteg mérete 3 értékre van állítva, és az adatok befejezéseket [[1, 2], [0, 5], [4, 2]] tartalmaznak, akkor ez az érték 0.83 (6 közül 5) értékre van beállítva, ha a modell [[1, 1], [0, 5], [4, 2]]-t előrejelzi.
valid_loss Az érvényesítési csomag vesztesége.
validation_mean_token_accuracy A modell által helyesen előrejelzett validációs tétel tokenjeinek százalékos aránya.

Például, ha a köteg mérete 3 értékre van állítva, és az adatok befejezéseket [[1, 2], [0, 5], [4, 2]] tartalmaznak, akkor ez az érték 0.83 (6 közül 5) értékre van beállítva, ha a modell [[1, 1], [0, 5], [4, 2]]-t előrejelzi.
full_valid_loss Az egyes korszakok végén kiszámított érvényesítési veszteség. Ha a betanítás jól megy, a veszteségnek csökkennie kell.
full_valid_mean_token_accuracy Az érvényes átlagos tokenpontosság, amelyet az egyes epochák végén számítunk ki. Ha a tréning jól halad, a token pontosságának növekednie kell.

A fájlban lévő results.csv adatokat ábrázolásként is megtekintheti az Foundry portálon. A betanított modell hivatkozásának kiválasztásakor három diagram jelenik meg: veszteség, átlagos token pontosság és token pontosság. Ha érvényesítési adatokat adott meg, mindkét adatkészlet ugyanazon a diagramon jelenik meg.

Figyelje meg, hogy a veszteség idővel csökkenni fog, és a pontosság növekedni fog. Ha a betanítási és érvényesítési adatok eltérnek, előfordulhat, hogy túlillesztés következik be. Próbálja ki a betanítást kevesebb korszakmal vagy kisebb tanulási sebesség-szorzóval.

Finomhangolt modell üzembe helyezése

Ha elégedett a finomhangolási feladat metrikáival, vagy csak tovább szeretne lépni a következtetésre, telepítenie kell a modellt.

Ha további validálás céljából helyez üzembe, fontolja meg a tesztelést egy fejlesztői üzembe helyezéssel.

Ha készen áll az éles üzembe helyezésre, vagy adott adattárolási igényei vannak, kövesse az üzembe helyezési útmutatót.

Variable Definíció
token Egy engedélyezési jogkivonat. Az engedélyezési tokenek többféleképpen is létrehozhatók. A kezdeti tesztelés legegyszerűbb módja az Azure Cloud Shell megnyitása az Azure Portalról. Ez után futtassa a az account get-access-token parancsot. Ezt a jogkivonatot használhatja ideiglenes engedélyezési jogkivonatként API-teszteléshez. Ajánljuk, hogy ezt a jelszóvektort egy új környezeti változóban tárolja.
subscription A társított Azure OpenAI-erőforrás előfizetés-azonosítója.
resource_group Az Azure OpenAI-erőforrás erőforráscsoportjának neve.
resource_name Az Azure OpenAI-erőforrás neve.
model_deployment_name Az új, finomhangolt modell telepítésének egyéni neve. Erre a névre hivatkozik a kód a csevegés befejező hívásai során.
fine_tuned_model A finomhangolt modell. Kérje le ezt az értéket a finomhangolási feladat eredményéből az előző lépésben. A következőhöz hasonlít: gpt-4.1-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83. Hozzá kell adnia az értéket a deploy_data JSON-hoz. Másik lehetőségként egy ellenőrzőpont üzembe helyezéséhez adja meg az ellenőrzőpont azonosítóját, amely a formátumban ftchkpt-e559c011ecc04fc68eaa339d8227d02djelenik meg.
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"
        }
    }
}'

A régiók közötti üzembe helyezésről és az üzembe helyezett modell használatáról további információt az üzembe helyezett, finomhangolt modell használata című témakörben talál.

Folyamatos finomhangolás végrehajtása

A finomhangolt modell létrehozása után érdemes lehet a további finomhangolással tovább finomítani a modellt. A folyamatos finomhangolás egy már finomhangolt modell alapmodellként való kiválasztásának és az új betanítási példák további finomhangolásának iteratív folyamata. A folyamatos finomhangolás csak OpenAI-modellek esetén támogatott.

A korábban finomhangolt modell finomhangolásához ugyanazt a folyamatot kell használnia, amelyet a testreszabott modell létrehozása című cikkben ismertetett. Az általános alapmodell nevének megadása helyett azonban meg kell adnia a finomhangolt modell azonosítóját. A finomhangolt modell azonosítója a következőképpen gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7néz ki.

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs \
  -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>"
}'

Azt is javasoljuk, hogy adja meg a paramétert a suffix finomhangolt modell iterációinak könnyebb megkülönböztetéséhez. A suffix paraméter egy sztringet vesz fel, és a finomhangolt modell azonosítására van beállítva. Az utótag legfeljebb 40 karaktert tartalmazhat, amelyek a következők: a-tól z-ig, A-tól Z-ig, 0-tól 9-ig, -, és _; ezeket hozzáadják a finomhangolt modell nevéhez.

Ha nem biztos a meglévő finomhangolt modell azonosítójában, ezt az információt a Foundry Modellek oldalán találja. Vagy létrehozhat modellek listáját egy Azure OpenAI-erőforráshoz a REST API használatával.

Tisztítsa meg a telepítéseket, a testreszabott modelleket és a betanítási fájlokat

Ha már nincs szüksége a testre szabott modellre, törölheti az üzembe helyezést és a modellt. Szükség esetén törölheti a szolgáltatásba feltöltött betanítási és érvényesítési fájlokat is.

A modell üzembe helyezésének törlése

Az alábbi módszerek bármelyikével törölheti a testreszabott modell üzembe helyezését:

A testre szabott modell törlése

A testre szabott modellt a Foundry használatával törölheti.

Megjegyzés:

A testre szabott modellek nem törölhetők, ha már rendelkezik központi telepítéssel. A testre szabott modell törlése előtt törölnie kell a modell üzembe helyezését .

Betanítási fájlok törlése

Az Azure OpenAI-előfizetésből opcionálisan törölheti a betanításhoz feltöltött betanítási és érvényesítési fájlokat, valamint a betanítás során létrehozott eredményfájlokat. A Foundry használatával törölheti a fájlokat.