Dela via


Förstå token

Tokens är ord, teckenuppsättningar eller kombinationer av ord och skiljetecken som genereras av stora språkmodeller (LLM) när de delar upp text. Tokenisering är det första steget i träningen. LLM analyserar semantiska relationer mellan token, till exempel hur ofta de används tillsammans eller om de används i liknande kontexter. Efter träningen använder LLM dessa mönster och relationer för att generera en sekvens med utdatatoken baserat på indatasekvensen.

Omvandla text till token

Den uppsättning unika token som en LLM tränas på kallas dess vokabulär.

Tänk till exempel på följande mening:

I heard a dog bark loudly at a cat

Den här texten kan tokeniseras som:

  • I
  • heard
  • a
  • dog
  • bark
  • loudly
  • at
  • a
  • cat

Genom att ha en tillräckligt stor uppsättning träningstext kan tokenisering kompilera ett ordförråd med tusentals token.

Vanliga tokeniseringsmetoder

Den specifika tokeniseringsmetoden varierar beroende på LLM. Vanliga tokeniseringsmetoder är:

  • Word-tokenisering (text delas upp i enskilda ord baserat på en avgränsare)
  • Teckentokenisering (text delas upp i enskilda tecken)
  • Underordstokenisering (text delas upp i partiella ord eller teckenuppsättningar)

Till exempel använder GPT-modellerna, som utvecklats av OpenAI, en typ av underordstokenisering som kallas BYTE-Pair Encoding (BPE). OpenAI innehåller ett verktyg för att visualisera hur text ska tokeniseras.

Det finns fördelar och nackdelar med varje tokeniseringsmetod:

Tokenstorlek Fördelar Nackdelar
Mindre token (tecken- eller underordstokenisering) – Gör att modellen kan hantera ett bredare antal indata, till exempel okända ord, stavfel eller komplex syntax.
- Kan tillåta att vokabulärstorleken minskas, vilket kräver färre minnesresurser.
– En viss text delas upp i fler token, vilket kräver ytterligare beräkningsresurser under bearbetningen.
– Med tanke på en fast tokengräns är den maximala storleken på modellens indata och utdata mindre.
Större token (ordtokenisering) – En viss text delas upp i färre token, vilket kräver färre beräkningsresurser under bearbetningen.
– Med samma tokengräns är den maximala storleken på modellens indata och utdata större.
– Kan orsaka en ökad vokabulärstorlek, vilket kräver mer minnesresurser.
– Kan begränsa modellernas förmåga att hantera okända ord, stavfel eller komplex syntax.

Så här använder LLM:er token

När LLM har slutfört tokeniseringen tilldelar den ett ID till varje unik token.

Tänk på vår exempel mening:

I heard a dog bark loudly at a cat

När modellen använder en ordtokeniseringsmetod kan den tilldela token-ID:t på följande sätt:

  • I (1)
  • heard (2)
  • a (3)
  • dog (4)
  • bark (5)
  • loudly (6)
  • at (7)
  • a ("a"-token har redan tilldelats ett ID på 3)
  • cat (8)

Genom att tilldela ID:t kan text representeras som en sekvens med token-ID:t. Exempelsatsen skulle representeras som [1, 2, 3, 4, 5, 6, 7, 3, 8]. Meningen "I heard a cat" skulle representeras som [1, 2, 3, 8].

När träningen fortsätter lägger modellen till nya token i träningstexten i sitt ordförråd och tilldelar den ett ID. Till exempel:

  • meow (9)
  • run (10)

De semantiska relationerna mellan token kan analyseras med hjälp av dessa token-ID-sekvenser. Numeriska vektorer med flera värden, så kallade inbäddningar, används för att representera dessa relationer. En inbäddning tilldelas till varje token baserat på hur ofta den används tillsammans med, eller i liknande sammanhang som, de andra tokens.

När den har tränats kan en modell beräkna en inbäddning för text som innehåller flera token. Modellen tokeniserar texten och beräknar sedan ett övergripande inbäddningsvärde baserat på de inlärda inbäddningarna för de enskilda token. Den här tekniken kan användas för semantiska dokumentsökningar eller lägga till vektorlager i en AI.

Under utdatagenereringen förutsäger modellen ett vektorvärde för nästa token i sekvensen. Modellen väljer sedan nästa token från vokabulären baserat på det här vektorvärdet. I praktiken beräknar modellen flera vektorer med hjälp av olika element i de tidigare tokens inbäddningar. Modellen utvärderar sedan alla potentiella token från dessa vektorer och väljer den mest sannolika för att fortsätta sekvensen.

Utdatagenerering är en iterativ åtgärd. Modellen lägger till den förutsagda token i sekvensen hittills och använder den som indata för nästa iteration och skapar den slutliga utdatan en token i taget.

Tokenbegränsningar

LLM:er har begränsningar för det maximala antalet token som kan användas som indata eller genereras som utdata. Den här begränsningen gör ofta att indata- och utdatatoken kombineras till ett maximalt kontextfönster. Tillsammans avgör en modells tokengräns och tokeniseringsmetod den maximala längden på text som kan anges som indata eller genereras som utdata.

Tänk dig till exempel en modell som har ett maximalt kontextfönster på 100 token. Modellen bearbetar exempelmeningarna som indatatext:

I heard a dog bark loudly at a cat

Med hjälp av en ordbaserad tokeniseringsmetod är indata nio token. Detta lämnar 91 ordtoken tillgängliga för utdata.

Genom att använda en teckenbaserad tokeniseringsmetod är indata 34 token (inklusive blanksteg). Detta lämnar endast 66 teckens token tillgängliga för utdata.

Tokenbaserad prissättning och hastighetsbegränsning

Generativa AI-tjänster använder ofta tokenbaserade priser. Kostnaden för varje begäran beror på antalet indata- och utdatatoken. Prissättningen kan skilja sig mellan indata och utdata. Se till exempel priser för Azure OpenAI-tjänsten.

Generativa AI-tjänster kan också begränsas när det gäller det maximala antalet token per minut (TPM). Dessa hastighetsgränser kan variera beroende på tjänstregion och LLM. Mer information om specifika regioner finns i kvoter och gränser för Azure OpenAI-tjänsten.