ማስመሰያ (Tokenization) ጥሬ ጽሑፍ እንደ GPT ባሉ ትላልቅ የቋንቋ ሞዴሎች (ኤል.ኤም.ኤም.) ወደሚቻል ቅርጸት የሚቀየርበት መግቢያ በር ነው። በሰዎች ሊነበብ በሚችል ይዘት እና ሞዴሎች በሚያስኬዱ የቁጥር መረጃዎች መካከል እንደ ድልድይ ሆኖ ይሰራል። አንድ ሞዴል ወጥነት ያለው ጽሑፍን ከመረዳቱ ወይም ከማፍለቁ በፊት፣ ግብዓቱን ወደ ትናንሽ ክፍሎች መከፋፈል አለበት ቶከን .
በጂፒቲ አርክቴክቸር ውስጥ ማስመሰያ ለአምሳያው አፈጻጸም እና ችሎታዎች፣ ቅልጥፍና፣ የአውድ መስኮት አጠቃቀም እና የውጤት ጥራት ላይ ተጽእኖ የሚያሳድር ነው። ማስመሰያ ማለት ቃላትን፣ ንዑስ ቃላትን፣ ቁምፊዎችን ወይም ልዩ ምልክቶችን ሊወክሉ የሚችሉ ቶከኖች ወደ ሚባሉ ትናንሽ ክፍሎች የመከፋፈል ሂደት ነው። እነዚህ ቶከኖች ሞዴሉ የሚያስኬድባቸው መሰረታዊ የግንባታ ብሎኮች ናቸው። ጽሑፉን የማስመሰያ መንገድ በቀጥታ ሞዴሉ ውሂብን በምን ያህል በብቃት ማስተናገድ እንደሚችል፣ ምን ያህል መረጃ በአውድ መስኮቱ ውስጥ እንደሚስማማ እና በሚፈጥራቸው ምላሾች ጥራት ላይ ተጽዕኖ ያሳድራል።
የአውድ መስኮቱ ሞዴሉ በአንድ ኦፕሬሽን ውስጥ ሊያስኬድ የሚችለው ከፍተኛው የቶከኖች ብዛት ነው፣ ሁለቱንም ግብአት እና የተፈጠረውን ውጤት ጨምሮ። ለምሳሌ፣ ባለ 32,000-ቶከን አውድ መስኮት ያለው ሞዴል ሁሉንም ነገር ማሟላት አለበት-የእርስዎን የግቤት ጽሑፍ፣ የስርዓት መመሪያዎች እና የአምሳያው ምላሽ—በዚህ ገደብ ውስጥ። ቀልጣፋ ማስመሰያ የተሰጠውን ጽሑፍ ለመወከል የሚያስፈልጉትን የቶከኖች ብዛት ይቀንሳል፣ይህም ከገደቡ ሳይበልጥ የበለፀጉ ውጤቶችን እንዲያካትቱ ወይም እንዲረዝሙ ያስችልዎታል። ደካማ ማስመሰያ (Poor tokenization)፣ በሌላ በኩል፣ የማስመሰያ ቁጥሮችን ሳያስፈልግ እንዲጨምር ያደርጋል፣ በአውድ መስኮቱ ውስጥ ጠቃሚ ቦታን በማባከን እና የአምሳያው ረዘም ላለ ጊዜ ስራዎች ጥቅም ላይ እንዳይውል ያደርጋል።
አንድ ጊዜ ጽሑፍ ከተሰየመ፣ እያንዳንዱ ማስመሰያ ወደ አሃዛዊ መክተት ይቀየራል - የሒሳብ ውክልና በከፍተኛ ስፋት (ብዙውን ጊዜ በመቶዎች ወይም በሺዎች የሚቆጠሩ ልኬቶች)። ይህ መክተት የማስመሰያውን ትርጉም እና ግንኙነቶች በጠቅላላው የቃላት አገባብ ውስጥ ይይዛል። ለምሳሌ፣ እንደ "ሩጫ" እና "መሮጥ" ያሉ ተመሳሳይ ቃላት ማስመሰያዎች በዚህ ቦታ ላይ እንደ "ሩጫ" እና "ጠረጴዛ" ካሉ ተያያዥነት የሌላቸው ቶከኖች የበለጠ ይቀርባሉ። እነዚህ መክተቻዎች ሞዴሉ የቶከኖችን ቅደም ተከተል እንዲረዳ እና በጽሑፍ ማመንጨት ወቅት በጣም ሊከሰት የሚችለውን ቀጣይ ማስመሰያ እንዲተነብይ ያስችለዋል። ይህ ሂደት GPT ወጥነት ያለው፣ ከዐውደ-ጽሑፉ ጋር ተዛማጅነት ያላቸውን ውጤቶች፣ ለጥያቄ ምላሽ መስጠት፣ ዓረፍተ ነገርን መሙላት ወይም የፈጠራ ይዘትን ማመንጨት የሚያስችል ነው።
በመሰረቱ፣ ማስመሰያ ማድረግ የቅድሚያ ሂደት ብቻ አይደለም—ለጂፒቲ ሞዴሎች በብቃት እንዲሰሩ እና ከፍተኛ ጥራት ያላቸውን ውጤቶች እንዲያቀርቡ ወሳኝ ማንቃት ነው።
ማስመሰያ አንድ-መጠን-የሚስማማ-ሁሉንም ሂደት አይደለም; አስቀድሞ በተገለጹት ሕጎች ወይም ስልተ ቀመሮች ላይ በመመስረት ጽሑፍን ወደ ማስተዳደር ወደሚችሉ ቶከኖች ለመከፋፈል የተነደፉ ይለያያል።
እንዴት እንደሚሰራ ጠለቅ ያለ እይታ እነሆ፡-
መከፋፈል
ይህ ጽሑፍን እንደ ቃላት፣ ንኡስ ቃላት ወይም ቁምፊዎች ባሉ ትናንሽ ክፍሎች መከፋፈልን ያካትታል። ዘመናዊ ኤል.ኤል.ኤም.ዎች ብዙ ጊዜ በንዑስ ቃል ማስመሰያ ላይ ይመረኮዛሉ ምክንያቱም በውጤታማነት እና በጥንካሬ መካከል ሚዛን ይሰጣል። ይህ ሚዛን የሚነሳው የንዑስ ቃል ማስመሰያ ብርቅዬ ወይም የማይታወቁ ቃላትን ወደ ትናንሽ፣ ይበልጥ የተለመዱ አካላት በመከፋፈል፣ አሁንም ተደጋጋሚ ቃላትን እንደ ነጠላ ቶከኖች በመቀየስ ማስተናገድ ስለሚችል ነው።
ለምሳሌ ፥
unhappiness
የሚለውን ቃል አስቡበት . የንዑስ ቃል ማስመሰያ በመጠቀም፣ ወደዚህ ሊገባ ይችላል፡-
un
, happi
እና ness
.ይህ አቀራረብ የሚከተሉትን ያረጋግጣል-
un
እና ness
ያሉ የተለመዱ ክፍሎች በተለያዩ ቃላት እንደገና ጥቅም ላይ ይውላሉ፣ የቃላት ብዛትን ይቀንሳል።unhappiness
ያሉ ብርቅዬ ቃላት አሁንም ወደታወቁ ንዑስ ክፍሎች በመከፋፈል፣ ከቃላት ውጭ ጉዳዮችን በማስወገድ ሊሰሩ ይችላሉ።
በተግባራዊ አገላለጽ፣ ይህ ሞዴሎች የቃላቶቹን ከመጠን በላይ ሳያናፍሱ በተለያዩ የጽሑፍ ግብዓቶች ላይ በተሻለ ሁኔታ እንዲገልጹ ያስችላቸዋል።
ኢንኮዲንግ
ኢንኮዲንግ ለእያንዳንዱ ቶከን ልዩ ኢንቲጀር አስቀድሞ በተገለጸው መዝገበ ቃላት ላይ ይመድባል - አንድ ሞዴል የሚገነዘበው የሁሉም ሊሆኑ የሚችሉ ቶከኖች ስብስብ። በጂፒቲ እና ተመሳሳይ ሞዴሎች አውድ ውስጥ የቃላት ፍቺው በስልጠና ወቅት ይፈጠራል እና አምሳያው ጽሑፍን ለመረዳት እና ለማፍለቅ የሚጠቀምባቸውን ንዑስ ቃላት (ወይም ቁምፊዎች) ስብስብ ይወክላል።
ለምሳሌ በጂፒቲ ውስጥ፡-
hello
የሚለው ቃል እንደ 1356
ኢንቲጀር ውክልና ያለው ነጠላ ምልክት ሊሆን ይችላል።micropaleontology
ያለ ያልተለመደ ቃል እንደ micro
፣ paleo
እና ntology
ወደ ንኡስ ቃል ቶከኖች ሊከፋፈል ይችላል፣ እያንዳንዱም የራሱ ኢንቲጀር አለው።
ለ ChatGPT ይህ ማለት ተጠቃሚው ጽሁፍ ሲያስገባ ማስመሰያ ሰጭው የአምሳያው የቃላት ዝርዝር መሰረት በማድረግ የግቤት ሕብረቁምፊውን ወደ ተከታታይ ኢንቲጀር ያዘጋጃል። ይህ ቅደም ተከተል በነርቭ አውታር ይከናወናል. የቃላት መጠኑ የአምሳያው የማህደረ ትውስታ አጠቃቀም እና የስሌት ቅልጥፍና ላይ ተጽእኖ ያሳድራል፣ ይህም ውስብስብ የቋንቋ ግንባታዎችን በማስተናገድ እና የስርዓቱን አፈጻጸም በመጠበቅ መካከል ያለውን ሚዛን ያመጣል።
መፍታት
ኮድ መፍታት የተገላቢጦሽ ሂደት ነው፡ ተከታታይ የማስመሰያ ኢንቲጀርን ወደ ሰው ሊነበብ ወደ ሚችል ጽሑፍ መቀየር። ለንዑስ ቃል ማስመሰያ፣ ይህ በተቻለ መጠን ንዑስ ቃላቶችን ወደ ሙሉ ቃላት ማቀናጀትን ያካትታል።
እንዴት እንደሚሰራ :
ለምሳሌ ፥
ሞዴሉ የ un
, happi
, እና ness
ምልክቶችን ያመነጫል እንበል. ዲኮዲንግ ንኡስ ቃላቶቹን በማጣመር ወደ unhappiness
ይገነባል። የቦታዎች ትክክለኛ አያያዝ un
እንደ የተለየ ቃል አለመያዙን ያረጋግጣል።
ይህ ስርዓት በንዑስ ቃል ላይ የተመሰረቱ ሞዴሎች ብርቅዬ ወይም ውስብስብ ቃላትን በትክክል የመወከል ችሎታን እየጠበቀ ጽሑፍን በብቃት እንዲያመነጩ ያስችላቸዋል።
የቻትጂፒቲ ኤፒአይ ማስመሰያዎችን በራስ ሰር ሲያስተናግድ፣ ገንቢዎች በመተግበሪያዎቻቸው ላይ የተሻለ ቁጥጥር ለማግኘት በቀጥታ tiktoken
ይጠቀማሉ። የግቤት ጽሁፍ እና ምላሾች ከአምሳያው ገደቦች ጋር የሚጣጣሙ መሆናቸውን በማረጋገጥ የቅድመ-መፈተሽ እና የማስመሰያ ገደቦችን ለመቆጣጠር ያስችላል። ይህ በተለይ ከረጅም ንግግሮች ወይም ሰነዶች ጋር ሲሰሩ ስህተቶችን ለማስወገድ በጣም አስፈላጊ ነው. በተጨማሪም፣ ግብዓቶችን በመቁረጥ ወይም በማጠቃለል የኤፒአይ ወጪዎችን ለመቀነስ ገንቢዎች የማስመሰያ አጠቃቀምን ማመቻቸት ይችላሉ።
tiktoken
የቶኬኔዜሽን ጉዳዮችን ለማረም ይረዳል፣ ይህም ጽሑፍ እንዴት እንደሚሰየም እና እንደሚፈታ ግልጽነት ይሰጣል። ረጅም ግብዓቶችን ለማስተናገድ tiktoken
ጽሑፍን ወደ ትናንሽ ቁርጥራጮች ሊከፋፍል ይችላል ፣ ይህም ትላልቅ ሰነዶችን በክፍሎች ለማካሄድ ያስችላል። በመጨረሻም፣ ለላቁ የአጠቃቀም ጉዳዮች፣ እንደ መክተት ወይም የማስመሰያ ደረጃ ማጭበርበር፣ tiktoken
ቶከኖች እንዴት እንደሚፈጠሩ እና እንደሚሰሩ ላይ ትክክለኛ ቁጥጥርን ያረጋግጣል።
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"])
ይህ አካሄድ በChatGPT API ላይ በሚገነባበት ጊዜ ሁለቱንም ጥሩ አፈጻጸም እና ወጪ ቆጣቢነትን ያረጋግጣል።
tiktoken
ማሰስ፡ የጂፒቲ ማስመሰያ የOpenAI's tiktoken
ቤተ-መጽሐፍት በብቃት ለማስመሰያ እና የጂፒቲ ሞዴሎችን ገደቦች ለመረዳት የተነደፈ ነው። እንዴት እንደሚሰራ እንመርምር፡-
tiktoken
በመጠቀም ጽሑፍን እንዴት ማስያዝ እንደሚቻል የ Python ምሳሌ እዚህ አለ። የpython ደብተሮቼን ለማሄድ https://colab.research.google.com/ መጠቀም እወዳለሁ።
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 ሲጠይቁ የማስመሰያ አጠቃቀምን ለማስላት ተግባራዊ ምሳሌ ይኸውና፡
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'])
ይህ ኮድ ለዋጋ እና ለአፈጻጸም ማመቻቸት ወሳኝ የሆነውን የማስመሰያ አጠቃቀምን ለመቆጣጠር ይረዳል።
የአይአይ አፕሊኬሽኖችን ለሚገነቡ መሐንዲሶች ማስመሰያነትን መረዳት በጣም አስፈላጊ ነው ምክንያቱም የጽሑፍ መረጃ በቋንቋ ሞዴሎች እንዴት እንደሚሰራ በቀጥታ ይነካል። ማስመሰያ (Tokenization) ጥሬ ጽሑፍን ወደ ትናንሽ፣ ትርጉም ያላቸው ክፍሎች - እንደ ቃላቶች፣ ንዑስ ቃላቶች ወይም ገጸ-ባህሪያት - ለእነዚህ ሞዴሎች መሠረታዊ ግብዓቶች መከፋፈልን ያካትታል። ይህ ሂደት ገንቢዎች የግብአት መጠኖችን በትክክል እንዲያስተዳድሩ፣ አላስፈላጊ የማስመሰያ አጠቃቀምን በመቀነስ ወጪን እንዲያሻሽሉ እና ጽሑፉ አውድ አገባብ በሚይዝ መልኩ መከፋፈሉን በማረጋገጥ የሞዴል አፈጻጸምን እንዲያሻሽሉ ያስችላቸዋል። ከዚህም በላይ ቶኬኔሽንን በቀጥታ ከደንበኛ ወገን ኮድ ጋር በማካተት የመረጃ ስርጭትን ከአቅም በላይ እና መዘግየትን በመቀነስ የበለጠ ቀልጣፋ መሸጎጫ እና ፈጣን ቅድመ-ሂደትን በማዘጋጀት ስራውን ያቀላጥፋል። መሐንዲሶች ማስመሰያዎችን በመቆጣጠር ሁለቱም ጠንካራ እና ወጪ ቆጣቢ የሆኑ የኤአይአይ ሲስተሞችን መገንባት ይችላሉ፣ በመጨረሻም የመተግበሪያዎቻቸውን ምላሽ እና ልኬት ያሳድጋል።