Med hjälp av Azures Cognitive Services, som tillhandahåller API-baserad tillgång till intränade modeller, har maskininlärning och AI-forskning rört sig snabbt från labben till våra IDE:er (integrated development environment) för utvecklare.

Det finns många olika tillvägagångssätt att leverera AI-tjänster, varav en av de mer lovande metoderna för att arbeta med språk är en teknik som kallas generativ inlärning, eller ”generative pre-training” (GPT) på engelska. En teknik som hanterar stora mängder text.

Open AI och Microsoft

Det var Open AI Research Lab som gick i bräschen för denna teknik, och publicerade 2018 en första uppsats i ämnet. Modellen de använder har genomgått flera iterationer, vilka började med den oövervakade GPT-2 som använde otaggade data för att efterlikna människor. GPT-2 byggde på 40 gigabyte av internetinnehåll och krävde mycket träning för att tillhandahålla en modell med 1,5 miljarder parametrar.

GPT-2 följdes av GPT-3 – en mycket större modell med 175 miljarder parametrar. GPT-3, som licensieras exklusivt till Microsoft, ligger till grund för verktyg som programkodsfokuserade Codex, som används av GitHub Copilot (en tjänst för autogenerering av programkod), och det bildgenererande verktyget Dall-E.

En modell som GPT-3, som kräver stora mängder beräkningskraft och minne – tusentals petaflops om dagen – är en ideal kandidat för molnbaserade, högpresterande beräkningsplattformar med specialiserade superdatorer. Microsoft har byggt sina egna Nvidia-baserade servrar för superdatorberäkningar på Azure, vars molninstanser kvalar in på superdatorernas TOP500-lista. Azures AI-servrar bygger på Nvidias Ampere A12000 Tensor Core GPU:er, sammankopplade över ett snabbt Infiniband-nätverk.

Open AI på Azure

Open AIs generativa AI-verktyg har byggts och tränats på Azure-servrar. Som en del av den

långlivade överenskommelsen mellan Open AI och Microsoft har Open AI:s verktyg gjorts tillgängliga som en del av Azure, med Azure-specifika API:er och integration mot Azures faktureringstjänst. Efter att ha rullat en tid som begränsat testversion finns nu Azures svit av API:er för OpenAI allmänt tillgängliga med stöd för textgenerering med GPT-3 och Codex kodmodell. Microsoft har sagt att de kommer att lägga till bildgenerering med Dall-E i en framtida uppdatering.

Det betyder dock inte att vem som helst kan bygga en applikation som använder GPT-3. Microsoft agerar fortfarande grindvakt för att säkerställa att projekt följer deras etiska riktlinjer för AI-användning och användningsområdena är hårt styrda. Du behöver också vara en direkt Microsoft-kund för att få tillgång till Azure Open AI. Microsoft använder en liknande process för tillgång till deras Limited Access Cognitive Services, där det finns en risk för imitation av personer och integritetsintrång.

Dessa policys kommer förmodligen även fortsättningsvis att vara strikta, och vissa områden, som sjukvård, kommer antagligen att kräva extra skydd för att möta regulatoriska krav. Microsofts egna erfarenheter av AI-baserade språkmodeller har lärt dem en läxa de inte vill upprepa. Som ett extra skydd finns det innehållsfilter för in- och utdata, med varningar för både Microsoft och utvecklare.

Utforska Azure Open AI Studio

När ditt konto väl blivit godkänt för att använda Azure Open AI, kan du börja bygga kod som använder dess API-gränssnitt. De lämpliga resurserna i Azure kan skapas från en portal, från Azures CLI eller med mallar för Arm.

Om du använder Azure Portal, skapa en resurs som är allokerad till ditt konto och den resursgrupp du avser att använda för din applikation, plus andra tjänster och infrastruktur i Azure. Sen ger du resursen ett namn och väljer en prismodell. Just nu finns det bara en prismodell, men det kommer troligen att ändras när Microsoft rullar ut nya tjänstemodeller.

Med en resurs på plats kan du rulla ut en modell med hjälp av Azure Open AI Studio. Det är här du utför det mesta arbetet med Open AI. För närvarande kan du välja mellan olika modeller inom GPT-3-familjen, inklusive den kodbaserade Codex. Andra modeller använder inbäddningar (embeddings) – komplex semantisk information som är optimerad för sökningar.

Inom varje familj av modeller finns det olika modeller med namn som indikerar både kostnader och kapaciteter. Om du använder GPT-3 har modellen Ada den lägsta kostnaden och minst kapacitet, och Davinci de högsta. Varje modell är ett superset av den under, så när uppgifterna blir mer komplexa behöver du inte ändra din kod, du bara väljer en annan modell.

Intressant nog rekommenderar Microsoft att man börjar med den mest kapabla modellen när man formger en Open AI-driven applikation, detta eftersom det låter dig trimma in den underliggande modellen för pris och kapacitet när du tar applikationen till produktion.

Arbeta med modellanpassning

Även om GPT-3:s funktioner för textkomplettering har blivit virala kommer i praktiken din applikation att behöva vara mer fokuserad på ditt specifika användningsområde. Du vill inte att GPT-3 ska driva en supporttjänst som regelbundet ger irrelevanta råd.

Du måste bygga en anpassad modell med hjälp av träningsexempel med indata och önskade resultat, något Azures Open AI kallar ”slutföranden” (completions). Det är viktigt att ha en stor mängd träningsdata och Microsoft rekommenderar att man använder hundratals exempel. Du kan lägga in alla dina kommandon och slutföranden in en Json-fil för att förenkla hanteringen av dina träningsdata.

Med en anpassad modell på plats kan du använda Azure Open AI Studio för att testa hur GPT-3 kommer att arbeta för ditt scenario. Som en enkel lekyta kan du se hur modellen svarar på specifika kommandon med hjälp av en enkel konsol med vilken du kan skriva in ett kommando som sedan returnerar ett sluförande från Open AI. Microsoft beskriver hur man bygger ett bra kommando som ”show, don’t tell”, med vilket menas att kommandon ska vara så explicita som möjligt för att ge bästa resultat. Den här lekytan hjälper också till med att träna din modell, så om du bygger en klassificerare kan du tillhandahålla en lista med text och förväntade utdata för att få ett svar innan du levererar indata och en trigger.

En annan användbar funktion med lekytan är möjligheten att bestämma en avsikt och förväntade beteenden på ett tidigt stadium, så om du använder Open AI som ett verktyg för triangulering i en supportfunktion kan du bestämma förväntningen att utdata ska vara artiga och lugna, och se till att den inte imiterar en arg användare. Samma verktyg kan användas med Codex-modellen, så att du kan se hur den fungerar som ett verktyg för kodkomplettering eller som en dynamisk assistent.

Skriva kod som funkar med Azure Open AI

När du är klar att börja koda kan du använda dina installerade REST-ändpunkter, antingen direkt eller med Open AIs Python-bibliotek. Det senare är antagligen din snabbaste väg mot produktionskod. Du behöver ändpunktens URL, en autentiseringsnyckel och namnet på din installation. När du väl har dessa bestämmer du lämpliga miljövariabler för din kod. Som vanligt i en produktionsmiljö är det bäst att inte hårdkoda nycklar utan istället använda ett verktyg som Azure Key Vault för nyckelhantering.

Att anropa en ändpunkt är rätt simpelt: Använd metoden openai.Completion.create för att få ett svar och bestämma det maximala antalet tokens som behövs för att rymma ditt kommando och dess svar. Svarsobjektet som returneras från API:et innehåller texten som genererats av din modell, som kan extraheras, formateras och användas av resten av din kod.

De grundläggande anropen är enkla och det finns ytterligare parametrar din kod kan använda för att hantera svaret. Dessa parametrar styr modellens kreativitet och hur den samlar in resultaten. Du kan använda dessa parametrar för att se till att svaren är rättframma och precisa.

Om du använder ett annat språk, använd språkets analysverktyg för REST och Json. Du kan hitta referensguider för API:erna i Azure OpenAIs dokumentation eller dra nytta av Azures Swagger-specifikationer på Github för att generera API-anrop och jobba med returnerade data. Detta tillvägagångssätt fungerar bra med IDE:er som Visual Studio.

Kostnader för Azure Open AI

Ett viktigt element inom Open AI:s modeller är deras token-baserade prismodeller. Tokens i Azure handlar inte om de vanliga autentiserings-tokens de flesta känner till; de är tokeniserade bitar av strängar som skapas med en intern statistisk modell. Open AI tillhandahåller ett verktyg på sin sajt för att visa hur strängar tokeniseras för att hjälpa dig att förstå hur dina förfrågningar faktureras.

Du kan förvänta dig att en token är ungefär fyra tecken med text, men de kan vara både kortare och längre. Dock borde det landa i att 75 ord behöver cirka 100 tokens (ungefär ett stycke normal text).

Ju mer komplexa modeller, desto mer kostar en token. Grundmodellen Ada kostar cirka 0,0004 amerikanska cent per 1000 tokens, och för Davinci, i andra änden av skalan, kostar 1000 tokens cirka 0,02 cent. Om du lägger på dina egna inställningar tillkommer en kostnad för lagring, och om du använder inbäddningar kan kostnaden bli en magnitud högre på grund av större beräkningskrav.

Det tillkommer också kostnader för finslipning av modeller, cirka 20 dollar per beräkningstimme. På Azures webbsajt finns det några prisexempel att titta på, men den faktiska kostnaden kan variera beroende på hur din organisations kontorelation med Microsoft ser ut.

Det kanske mest förvånande med Azure OpenAI är hur enkelt det är att använda. Eftersom du använder förbyggda modeller (med möjligheten att göra lite finjusteringar), är allt du behöver göra att lägga på lite enkel inlärning, förstå hur kommandon genererar utdata, och länka verktygen till din kod som genererar textinnehåll eller kod som eller när det behövs.