Tokenizasiýa, çig tekstiň GPT ýaly uly dil modelleri (LLM) tarapyndan ulanyp boljak formata öwrülýän derwezesidir. Adam okalýan mazmun bilen modelleriň işleýän sanly maglumatlarynyň arasynda köpri bolup hyzmat edýär. Bir model bitewi tekste düşünip ýa-da döredip bilmezden ozal, bellikler diýilýän kiçi bölümlere girmeli.
GPT arhitekturasynda tokenizasiýa, netijelilige, kontekst penjiresiniň ulanylyşyna we çykyş hiline täsir edip, modeliň öndürijiligi we mümkinçilikleri üçin möhümdir. Tokenizasiýa , sözleri, söz düzümlerini, nyşanlary ýa-da ýörite nyşanlary aňladyp bilýän tokenler diýlip atlandyrylýan kiçi bölümlere bölmek prosesi. Bu bellikler, modeliň işleýän esasy gurluş bloklarydyr. Tekstiň bellik edilmegi, modeliň maglumatlary näderejede dolandyryp biljekdigine, kontekst penjiresinde näçe maglumatyň gabat gelýändigine we döredýän jogaplarynyň hiline gönüden-göni täsir edýär.
Kontekst penjiresi, giriş we öndürilen çykyşy goşmak bilen, modeliň bir amalda işläp bilýän iň köp belgisi. Mysal üçin, 32,000 belgili kontekst penjiresi bolan model, bu çäkde hemme zada - giriş tekstiňize, ulgam görkezmelerine we modeliň jogabyna laýyk gelmelidir. Netijeli tokenizasiýa, berlen teksti görkezmek üçin zerur bolan belgileriň sanyny azaldar, size has köp mazmun goşmaga ýa-da çäkden geçmän has uzyn, baý netijelere mümkinçilik berer. Beýleki bir tarapdan, pes tokenizasiýa, san sanlaryny gereksiz derejede köpeldip biler, kontekst penjiresinde gymmatly ýer ýitirip, modeliň has uzak işlerde ulanylmagyny çäklendirip biler.
Tekst bellik edilenden soň, her bir belgi san goýulmagyna öwrülýär - ýokary ölçegli giňişlikde matematiki şekillendiriş (köplenç ýüzlerçe ýa-da müňlerçe ölçeg). Bu ornaşdyrmak, söz düzüminiň manysyny we gatnaşyklaryny tutuş söz düzüminde ele alýar. Mysal üçin, "ylgamak" we "ylgamak" ýaly meňzeş sözler üçin bellikler bu giňişlikde "ylga" we "stol" ýaly baglanyşyksyz belgilere garanyňda has ýakyn ýerleşdiriler. Bu goýulmalar, modele bellikleriň yzygiderliligine düşünmäge we tekst döredilende indiki belgini çaklamaga mümkinçilik berýär. Bu amal, GPT-e bir soraga jogap bermek, sözlemi tamamlamak ýa-da döredijilik mazmuny döretmek ýaly sazlaşykly, kontekst taýdan degişli netijeleri çykarmaga mümkinçilik berýän zat.
Aslynda, tokenizasiýa diňe bir öňünden işlemek däl, GPT modelleriniň netijeli işlemegi we ýokary hilli netijeleri bermegi üçin möhüm mümkinçilikdir.
Tokenizasiýa bir ölçegli ölçeg däl; teksti bellikler diýlip atlandyrylýan bölümlere bölmek üçin döredilen öňünden kesgitlenen düzgünlere ýa-da algoritmlere baglylykda üýtgeýär.
Onuň işleýşine has içgin serediň:
Bölünmek
Bu teksti sözler, söz sözleri ýa-da simwollar ýaly kiçi bölümlere bölmegi öz içine alýar. Döwrebap LLM-ler köplenç netijelilik bilen berkligiň arasynda deňagramlylygy hödürleýänligi sebäpli, subword tokenizasiýasyna bil baglaýarlar. Bu deňagramlylyk ýüze çykýar, sebäbi subword tokenizasiýasy seýrek ýa-da näbelli sözleri kiçijik, has köp ýaýran böleklere bölüp, şol bir wagtyň özünde ýygy-ýygydan sözleri ýeke bellik hökmünde kodlap bilýär.
Mysal :
unhappiness
sözüne serediň. Subword belligini ulanyp, aşakdakylara girip biler:
un
, happi
we ness
.Bu çemeleşme kepillendirýär:
un
we ness
ýaly umumy komponentler dürli sözlerde gaýtadan ulanylýar, söz düzümini azaldýar.unhappiness
ýaly seýrek sözler, belli söz düzümlerine bölünip, sözden başga meselelerden gaça durmak arkaly işlenip bilner.
Amaly nukdaýnazardan seredeniňde, bu modellere söz düzümini aşa köpeltmezden dürli tekst girişlerinde has gowy umumylaşdyrmaga mümkinçilik berýär.
Kodlamak
Kodlamak, öňünden kesgitlenen söz düzümine esaslanyp, her bir belgä özboluşly bitewi san berýär - bir modeliň ykrar edip biljek ähli bellikleriniň ýygyndysy. GPT we şuňa meňzeş modelleriň kontekstinde söz düzümi okuw wagtynda döredilýär we modeliň tekste düşünmek we döretmek üçin ulanýan söz sözleriniň (ýa-da nyşanlaryň) toplumyny aňladýar.
Mysal üçin, GPT-de:
hello
sözi, 1356
ýaly bitewi şekillendirilen bir nyşan bolup biler.micropaleontology
ýaly seýrek bir termin, hersiniň öz bitewi sanlary bolan micro
, paleo
we ntology
ýaly söz belgilerine bölünip bilner.
ChatGPT üçin bu, ulanyjy tekst girizeninde, tokenizer giriş setirini modeliň söz düzümine esaslanýan bitewi yzygiderlilige kartalaşdyrýandygyny aňladýar. Soňra bu yzygiderlilik nerw ulgamy tarapyndan işlenýär. Sözlük ululygy modeliň ýadynyň ulanylyşyna we hasaplaýyş netijeliligine täsir edýär, çylşyrymly dil gurluşlaryny dolandyrmak we ulgamyň ýerine ýetirijiligini saklamak arasynda deňagramlylygy döredýär.
Dekodirlemek
Dekodirlemek ters prosesdir: bellik sanlarynyň yzygiderliligini adam okalýan tekste öwürmek. Subword belligi üçin, bu söz düzümlerini mümkin boldugyça doly sözlere ýygnamagy göz öňünde tutýar.
Bu nähili işleýär :
Mysal :
Model, un
, happi
we ness
üçin bellikleri döredýär diýeliň. Dekodirlemek, söz sözlerini birleşdirip, ony unhappiness
öwürýär. Boşluklary dogry dolandyrmak un
aýratyn söz hökmünde garalmagyny üpjün edýär.
Bu ulgam, seýrek ýa-da çylşyrymly adalgalary dogry görkezmek ukybyny saklamak bilen, söz düzümine esaslanýan modellere teksti netijeli döretmäge mümkinçilik berýär.
ChatGPT API tokenizasiýa awtomatiki usulda işleýän bolsa, döredijiler programmalaryna has gowy gözegçilik etmek üçin tiktoken
ulanýarlar. Giriş tekstleriniň we jogaplaryň modeliň çäklendirmelerine laýyk gelmegini üpjün edip, bellik çäklerini öňünden barlamaga we dolandyrmaga mümkinçilik berýär. Bu, esasanam uzak gepleşikler ýa-da resminamalar bilen işleýän wagtyňyz ýalňyşlyklardan gaça durmak üçin möhümdir. Mundan başga-da, döredijiler girişleri kesmek ýa-da jemlemek arkaly API çykdajylaryny azaltmak üçin token ulanylyşyny optimizirläp bilerler.
tiktoken
şeýle hem , tokenizasiýa meseleleriniň çözülmegine kömek edýär, tekstiň bellenilendigi we kodlanmagynyň aýdyňlygyny üpjün edýär. Uzyn girişleri dolandyrmak üçin tiktoken
teksti kiçi böleklere bölüp, uly resminamalary böleklere gaýtadan işlemäge mümkinçilik berýär. Iň soňunda bolsa, ornaşdyrmak ýa-da token derejeli manipulýasiýa ýaly ösen ulanylyş ýagdaýlary üçin, tiktoken
bellikleriň döredilişine we gaýtadan işlenişine takyk gözegçiligi üpjün edýär.
import openai import tiktoken openai.api_key = "your-api-key" # Initialize tokenizer for GPT-4 encoding = tiktoken.get_encoding("cl100k_base") # Function to count tokens def count_tokens(text): return len(encoding.encode(text)) # Example input user_input = "Explain the theory of relativity in detail with examples." conversation_history = [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What is the theory of relativity?"} ] # Combine inputs for token counting conversation_text = "".join([msg["content"] for msg in conversation_history]) + user_input # Pre-check input token limit (Use Case 1) token_limit = 4096 if count_tokens(conversation_text) > token_limit: print("Trimming conversation to fit within token limit.") conversation_history = conversation_history[1:] # Trim oldest message # Optimize input by summarizing if too long (Use Case 2) def summarize_if_needed(text, max_tokens=500): if count_tokens(text) > max_tokens: print("Input too long, summarizing...") response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "Summarize the following text."}, {"role": "user", "content": text} ], max_tokens=200 ) return response.choices[0].message["content"] return text long_text = "A very long text input that exceeds the desired token limit ... (more text)" optimized_text = summarize_if_needed(long_text, max_tokens=500) # Debug tokenization (Use Case 3) tokens = encoding.encode("OpenAI's ChatGPT is amazing!") print("Tokenized:", tokens) for token in tokens: print(f"Token ID: {token}, Token: '{encoding.decode([token])}'") # Handle long documents by splitting into chunks (Use Case 4) def split_into_chunks(text, chunk_size): tokens = encoding.encode(text) for i in range(0, len(tokens), chunk_size): yield encoding.decode(tokens[i:i + chunk_size]) document = "A very long document... (more text)" chunks = list(split_into_chunks(document, chunk_size=1000)) # Process each chunk separately responses = [] for chunk in chunks: response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": chunk}], max_tokens=300 ) responses.append(response.choices[0].message["content"]) full_response = " ".join(responses) # Advanced token manipulation (Use Case 5) custom_text = "Analyze the sentiment of this text." tokens = encoding.encode(custom_text) response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": encoding.decode(tokens)}], max_tokens=100 ) print("Final Response:", response.choices[0].message["content"])
Bu çemeleşme, ChatGPT API-de gurlanda iň amatly öndürijiligi we çykdajy netijeliligini üpjün edýär.
tiktoken
gözlemek : GPT-iň Tokenizer OpenAI-iň tiktoken
kitaphanasy netijeli görkezmek we GPT modelleriniň çäklendirmelerine düşünmek üçin döredildi. Onuň nähili işleýändigini öwreneliň:
Ine, tiktoken
ulanyp teksti nädip bellemelidiginiň Python mysaly. Python depderlerimi işletmek üçin https://colab.research.google.com/ ulanmagy halaýaryn.
import tiktoken # Choose a model-specific tokenizer encoding = tiktoken.get_encoding("o200k_base") # Input text text = "Tokenization is crucial for GPT models." # Tokenize text tokens = encoding.encode(text) print("Tokens:", tokens) # Decode back to text decoded_text = encoding.decode(tokens) print("Decoded Text:", decoded_text)
Tokens: [4421, 2860, 382, 19008, 395, 174803, 7015, 13] Decoded Text: Tokenization is crucial for GPT models.
ChatGPT API-lerini ulananyňyzda, tokenizasiýa düşünmek optimizirlemäge kömek edýär:
“ChatGPT API” -i soranyňyzda token ulanylyşyny hasaplamak üçin amaly mysal:
import tiktoken import openai def calculate_tokens(api_input, model="gpt-3.5-turbo"): encoding = tiktoken.encoding_for_model(model) tokens = encoding.encode(api_input) return len(tokens) # Example API call with token usage calculation api_input = "Explain the significance of tokenization in LLMs." model = "gpt-4" token_count = calculate_tokens(api_input, model) print(f"Token count for input: {token_count}") response = openai.ChatCompletion.create( model=model, messages=[{"role": "user", "content": api_input}] ) print("API Response:", response['choices'][0]['message']['content'])
Bu kod çykdajylaryň we öndürijiligiň optimizasiýasy üçin möhüm ähmiýete eýe bolan token ulanylyşyna gözegçilik etmäge kömek edýär.
AI programmalaryny gurýan inersenerler üçin tokenizasiýa düşünmek möhümdir, sebäbi bu tekst maglumatlarynyň dil modelleri bilen işlenişine gönüden-göni täsir edýär. Tokenizasiýa, bu modeller üçin esasy giriş bolan sözler, söz düzümleri ýa-da simwollar ýaly çig teksti kiçi, manyly birliklere bölmegi öz içine alýar. Bu amal işläp düzüjilere giriş ululyklaryny takyk dolandyrmaga, gereksiz nyşanlaryň ulanylyşyny azaltmak bilen çykdajylary optimizirlemäge we tekstiň kontekst manysyny saklaýan görnüşde bölünendigine göz ýetirip modeliň işleýşini gowulandyrmaga mümkinçilik berýär. Mundan başga-da, tokenizasiýany gönüden-göni müşderi tarapyndaky koda girizmek, has netijeli keş we has çalt işlemäge mümkinçilik berýän maglumatlary geçirişiň we gijä galmagy azaltmak arkaly amallary tertipleşdirip biler. Tokenizasiýany özleşdirmek bilen, inersenerler hem ygtybarly hem-de tygşytly AI ulgamlaryny gurup bilerler, netijede programmalarynyň duýgurlygyny we göwrümini ýokarlandyrarlar.