paint-brush
የእርስዎ ቻትቦት ቃላትን ማንበብ አይደለም - ማስመሰያዎችን መቁጠር ነው።@paulr
2,532 ንባቦች
2,532 ንባቦች

የእርስዎ ቻትቦት ቃላትን ማንበብ አይደለም - ማስመሰያዎችን መቁጠር ነው።

9m2025/02/05
Read on Terminal Reader

በጣም ረጅም፤ ማንበብ

ማስመሰያ (Tokenization) ጥሬ ጽሑፍ እንደ GPT ባሉ ትላልቅ የቋንቋ ሞዴሎች (ኤል.ኤም.ኤም.) ወደሚቻል ቅርጸት የሚቀየርበት መግቢያ በር ነው። በሰዎች ሊነበብ በሚችል ይዘት እና ሞዴሎች በሚያስኬዱ የቁጥር መረጃዎች መካከል እንደ ድልድይ ሆኖ ይሰራል። የጽሑፍ ምልክት የተደረገበት መንገድ ሞዴሉ ምን ያህል ውሂቡን በብቃት እንደሚይዝ በቀጥታ ይነካል።
featured image - የእርስዎ ቻትቦት ቃላትን ማንበብ አይደለም - ማስመሰያዎችን መቁጠር ነው።
undefined HackerNoon profile picture

ማስመሰያ (Tokenization) ጥሬ ጽሑፍ እንደ GPT ባሉ ትላልቅ የቋንቋ ሞዴሎች (ኤል.ኤም.ኤም.) ወደሚቻል ቅርጸት የሚቀየርበት መግቢያ በር ነው። በሰዎች ሊነበብ በሚችል ይዘት እና ሞዴሎች በሚያስኬዱ የቁጥር መረጃዎች መካከል እንደ ድልድይ ሆኖ ይሰራል። አንድ ሞዴል ወጥነት ያለው ጽሑፍን ከመረዳቱ ወይም ከማፍለቁ በፊት፣ ግብዓቱን ወደ ትናንሽ ክፍሎች መከፋፈል አለበት ቶከን .


በጂፒቲ አርክቴክቸር ውስጥ ማስመሰያ ለአምሳያው አፈጻጸም እና ችሎታዎች፣ ቅልጥፍና፣ የአውድ መስኮት አጠቃቀም እና የውጤት ጥራት ላይ ተጽእኖ የሚያሳድር ነው። ማስመሰያ ማለት ቃላትን፣ ንዑስ ቃላትን፣ ቁምፊዎችን ወይም ልዩ ምልክቶችን ሊወክሉ የሚችሉ ቶከኖች ወደ ሚባሉ ትናንሽ ክፍሎች የመከፋፈል ሂደት ነው። እነዚህ ቶከኖች ሞዴሉ የሚያስኬድባቸው መሰረታዊ የግንባታ ብሎኮች ናቸው። ጽሑፉን የማስመሰያ መንገድ በቀጥታ ሞዴሉ ውሂብን በምን ያህል በብቃት ማስተናገድ እንደሚችል፣ ምን ያህል መረጃ በአውድ መስኮቱ ውስጥ እንደሚስማማ እና በሚፈጥራቸው ምላሾች ጥራት ላይ ተጽዕኖ ያሳድራል።


የአውድ መስኮቱ ሞዴሉ በአንድ ኦፕሬሽን ውስጥ ሊያስኬድ የሚችለው ከፍተኛው የቶከኖች ብዛት ነው፣ ሁለቱንም ግብአት እና የተፈጠረውን ውጤት ጨምሮ። ለምሳሌ፣ ባለ 32,000-ቶከን አውድ መስኮት ያለው ሞዴል ሁሉንም ነገር ማሟላት አለበት-የእርስዎን የግቤት ጽሑፍ፣ የስርዓት መመሪያዎች እና የአምሳያው ምላሽ—በዚህ ገደብ ውስጥ። ቀልጣፋ ማስመሰያ የተሰጠውን ጽሑፍ ለመወከል የሚያስፈልጉትን የቶከኖች ብዛት ይቀንሳል፣ይህም ከገደቡ ሳይበልጥ የበለፀጉ ውጤቶችን እንዲያካትቱ ወይም እንዲረዝሙ ያስችልዎታል። ደካማ ማስመሰያ (Poor tokenization)፣ በሌላ በኩል፣ የማስመሰያ ቁጥሮችን ሳያስፈልግ እንዲጨምር ያደርጋል፣ በአውድ መስኮቱ ውስጥ ጠቃሚ ቦታን በማባከን እና የአምሳያው ረዘም ላለ ጊዜ ስራዎች ጥቅም ላይ እንዳይውል ያደርጋል።


አንድ ጊዜ ጽሑፍ ከተሰየመ፣ እያንዳንዱ ማስመሰያ ወደ አሃዛዊ መክተት ይቀየራል - የሒሳብ ውክልና በከፍተኛ ስፋት (ብዙውን ጊዜ በመቶዎች ወይም በሺዎች የሚቆጠሩ ልኬቶች)። ይህ መክተት የማስመሰያውን ትርጉም እና ግንኙነቶች በጠቅላላው የቃላት አገባብ ውስጥ ይይዛል። ለምሳሌ፣ እንደ "ሩጫ" እና "መሮጥ" ያሉ ተመሳሳይ ቃላት ማስመሰያዎች በዚህ ቦታ ላይ እንደ "ሩጫ" እና "ጠረጴዛ" ካሉ ተያያዥነት የሌላቸው ቶከኖች የበለጠ ይቀርባሉ። እነዚህ መክተቻዎች ሞዴሉ የቶከኖችን ቅደም ተከተል እንዲረዳ እና በጽሑፍ ማመንጨት ወቅት በጣም ሊከሰት የሚችለውን ቀጣይ ማስመሰያ እንዲተነብይ ያስችለዋል። ይህ ሂደት GPT ወጥነት ያለው፣ ከዐውደ-ጽሑፉ ጋር ተዛማጅነት ያላቸውን ውጤቶች፣ ለጥያቄ ምላሽ መስጠት፣ ዓረፍተ ነገርን መሙላት ወይም የፈጠራ ይዘትን ማመንጨት የሚያስችል ነው።

በመሰረቱ፣ ማስመሰያ ማድረግ የቅድሚያ ሂደት ብቻ አይደለም—ለጂፒቲ ሞዴሎች በብቃት እንዲሰሩ እና ከፍተኛ ጥራት ያላቸውን ውጤቶች እንዲያቀርቡ ወሳኝ ማንቃት ነው።


Tokenization እንዴት እንደሚሰራ

ማስመሰያ አንድ-መጠን-የሚስማማ-ሁሉንም ሂደት አይደለም; አስቀድሞ በተገለጹት ሕጎች ወይም ስልተ ቀመሮች ላይ በመመስረት ጽሑፍን ወደ ማስተዳደር ወደሚችሉ ቶከኖች ለመከፋፈል የተነደፉ ይለያያል።


እንዴት እንደሚሰራ ጠለቅ ያለ እይታ እነሆ፡-


መከፋፈል

ይህ ጽሑፍን እንደ ቃላት፣ ንኡስ ቃላት ወይም ቁምፊዎች ባሉ ትናንሽ ክፍሎች መከፋፈልን ያካትታል። ዘመናዊ ኤል.ኤል.ኤም.ዎች ብዙ ጊዜ በንዑስ ቃል ማስመሰያ ላይ ይመረኮዛሉ ምክንያቱም በውጤታማነት እና በጥንካሬ መካከል ሚዛን ይሰጣል። ይህ ሚዛን የሚነሳው የንዑስ ቃል ማስመሰያ ብርቅዬ ወይም የማይታወቁ ቃላትን ወደ ትናንሽ፣ ይበልጥ የተለመዱ አካላት በመከፋፈል፣ አሁንም ተደጋጋሚ ቃላትን እንደ ነጠላ ቶከኖች በመቀየስ ማስተናገድ ስለሚችል ነው።


ለምሳሌ
unhappiness የሚለውን ቃል አስቡበት . የንዑስ ቃል ማስመሰያ በመጠቀም፣ ወደዚህ ሊገባ ይችላል፡-

  • un , happi እና ness .

ይህ አቀራረብ የሚከተሉትን ያረጋግጣል-

  • ቅልጥፍና ፡ እንደ un እና ness ያሉ የተለመዱ ክፍሎች በተለያዩ ቃላት እንደገና ጥቅም ላይ ይውላሉ፣ የቃላት ብዛትን ይቀንሳል።
  • ጥንካሬ ፡ እንደ unhappiness ያሉ ብርቅዬ ቃላት አሁንም ወደታወቁ ንዑስ ክፍሎች በመከፋፈል፣ ከቃላት ውጭ ጉዳዮችን በማስወገድ ሊሰሩ ይችላሉ።


በተግባራዊ አገላለጽ፣ ይህ ሞዴሎች የቃላቶቹን ከመጠን በላይ ሳያናፍሱ በተለያዩ የጽሑፍ ግብዓቶች ላይ በተሻለ ሁኔታ እንዲገልጹ ያስችላቸዋል።


ኢንኮዲንግ

ኢንኮዲንግ ለእያንዳንዱ ቶከን ልዩ ኢንቲጀር አስቀድሞ በተገለጸው መዝገበ ቃላት ላይ ይመድባል - አንድ ሞዴል የሚገነዘበው የሁሉም ሊሆኑ የሚችሉ ቶከኖች ስብስብ። በጂፒቲ እና ተመሳሳይ ሞዴሎች አውድ ውስጥ የቃላት ፍቺው በስልጠና ወቅት ይፈጠራል እና አምሳያው ጽሑፍን ለመረዳት እና ለማፍለቅ የሚጠቀምባቸውን ንዑስ ቃላት (ወይም ቁምፊዎች) ስብስብ ይወክላል።


ለምሳሌ በጂፒቲ ውስጥ፡-

  • hello የሚለው ቃል እንደ 1356 ኢንቲጀር ውክልና ያለው ነጠላ ምልክት ሊሆን ይችላል።
  • እንደ micropaleontology ያለ ያልተለመደ ቃል እንደ micropaleo እና ntology ወደ ንኡስ ቃል ቶከኖች ሊከፋፈል ይችላል፣ እያንዳንዱም የራሱ ኢንቲጀር አለው።


ለ ChatGPT ይህ ማለት ተጠቃሚው ጽሁፍ ሲያስገባ ማስመሰያ ሰጭው የአምሳያው የቃላት ዝርዝር መሰረት በማድረግ የግቤት ሕብረቁምፊውን ወደ ተከታታይ ኢንቲጀር ያዘጋጃል። ይህ ቅደም ተከተል በነርቭ አውታር ይከናወናል. የቃላት መጠኑ የአምሳያው የማህደረ ትውስታ አጠቃቀም እና የስሌት ቅልጥፍና ላይ ተጽእኖ ያሳድራል፣ ይህም ውስብስብ የቋንቋ ግንባታዎችን በማስተናገድ እና የስርዓቱን አፈጻጸም በመጠበቅ መካከል ያለውን ሚዛን ያመጣል።


መፍታት

ኮድ መፍታት የተገላቢጦሽ ሂደት ነው፡ ተከታታይ የማስመሰያ ኢንቲጀርን ወደ ሰው ሊነበብ ወደ ሚችል ጽሑፍ መቀየር። ለንዑስ ቃል ማስመሰያ፣ ይህ በተቻለ መጠን ንዑስ ቃላቶችን ወደ ሙሉ ቃላት ማቀናጀትን ያካትታል።


እንዴት እንደሚሰራ :

  1. አምሳያው በምርት ጊዜ የኢንቲጀር ተከታታይ (ቶከኖች) ያመነጫል።
  2. ዲኮደሩ እያንዳንዱን ኢንቲጀር በመዝገበ-ቃላት ውስጥ ይመለከታል እና ተዛማጅ ንዑስ ቃላቱን ወይም ባህሪውን ሰርስሮ ያወጣል።
  3. ንኡስ ቃላቶች ቃላትን ለመመስረት የተዋሃዱ ናቸው፣ ደንቦችን በመተግበር ወጥነትን ለማረጋገጥ (ለምሳሌ በንዑስ ቃላቶች ዙሪያ አላስፈላጊ ክፍተቶችን ማስወገድ)።


ለምሳሌ
ሞዴሉ የ 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"])

በኮድ ውስጥ ያሉ ዋና ዋና ነጥቦች፡-

  1. የቅድመ-ማጣራት ማስመሰያ ገደቦች ግቤት ከአምሳያው ገደቦች ጋር የሚስማማ መሆኑን ያረጋግጣል፣ መቆራረጥን ወይም ስህተቶችን ያስወግዳል።
  2. የግብአት ማጠቃለያ ከረዥም ጽሑፍ ጋር ሲሰራ የማስመሰያ አጠቃቀምን ይቀንሳል።
  3. ማረም ማስመሰያ ቶከኖች እንዴት እንደሚሰቀሉ እና እንደሚፈቱ ግልጽነትን ይሰጣል።
  4. ረዣዥም ሰነዶችን ወደ ማስተዳደር በሚቻል ክፍፍሎች መከፋፈል ትላልቅ ግብዓቶችን በብቃት ያስኬዳል።
  5. የላቀ የማስመሰያ ማጭበርበር በቶከን የተቀመጡ ግብዓቶች ላይ ትክክለኛ ቁጥጥርን ያሳያል።


ይህ አካሄድ በChatGPT API ላይ በሚገነባበት ጊዜ ሁለቱንም ጥሩ አፈጻጸም እና ወጪ ቆጣቢነትን ያረጋግጣል።

3. 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.

4. በChatGPT APIs ውስጥ ለ Tokenization የገንቢ ሌቨርስ

የቻትጂፒቲ ኤፒአይዎችን ሲጠቀሙ ማስመሰያዎችን መረዳቱ ለማመቻቸት ይረዳል፡-

  1. የግቤት ቅልጥፍና
    • ግብዓቶችን አጠር አድርገው ያስቀምጡ። እያንዳንዱ ማስመሰያ ኃይልን የማስኬድ ወጪ እና የማስመሰያ ገደቡ ላይ ተጽዕኖ ያሳድራል (ለምሳሌ፡ 8k ለ GPT-3.5፣ 32k ለ GPT-4)።
    • አስፈላጊ መረጃን ብቻ በማቆየት አውድ እንደገና ተጠቀም።
  2. የሞዴል ምርጫ :
    • የተለያዩ የጂፒቲ ሞዴሎች የተለያዩ የማስመሰያ ባህሪያት አሏቸው። ትላልቅ የአውድ መስኮቶች ያላቸው ሞዴሎች ሰፋ ያለ ግብዓት ያነቃሉ ነገር ግን ከፍተኛ ወጪን ያስከትላሉ።
  3. ፈጣን መዋቅር ;
    • አላስፈላጊ ምልክቶችን ለመቀነስ በቅርጸት እና በሐረግ ይሞክሩ። የቃል ንግግርን መቀነስ ትርጉሙን ሳያጡ የማስመሰያ በጀትን ከፍ ሊያደርግ ይችላል።
  4. ጥሩ ማስተካከያ እና ማስመሰያ ማዛባት ;
    • በመተግበሪያዎች ላይ አንድ አይነት ግብዓቶችን ለማረጋገጥ እንደ ንጣፍ እና መቆራረጥ ያሉ የማስመሰያ ደረጃ ስራዎችን ይጠቀሙ።

5. በ Python ውስጥ የናሙና አተገባበር

የ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'])

ይህ ኮድ ለዋጋ እና ለአፈጻጸም ማመቻቸት ወሳኝ የሆነውን የማስመሰያ አጠቃቀምን ለመቆጣጠር ይረዳል።


6. የመውሰድ

የአይአይ አፕሊኬሽኖችን ለሚገነቡ መሐንዲሶች ማስመሰያነትን መረዳት በጣም አስፈላጊ ነው ምክንያቱም የጽሑፍ መረጃ በቋንቋ ሞዴሎች እንዴት እንደሚሰራ በቀጥታ ይነካል። ማስመሰያ (Tokenization) ጥሬ ጽሑፍን ወደ ትናንሽ፣ ትርጉም ያላቸው ክፍሎች - እንደ ቃላቶች፣ ንዑስ ቃላቶች ወይም ገጸ-ባህሪያት - ለእነዚህ ሞዴሎች መሠረታዊ ግብዓቶች መከፋፈልን ያካትታል። ይህ ሂደት ገንቢዎች የግብአት መጠኖችን በትክክል እንዲያስተዳድሩ፣ አላስፈላጊ የማስመሰያ አጠቃቀምን በመቀነስ ወጪን እንዲያሻሽሉ እና ጽሑፉ አውድ አገባብ በሚይዝ መልኩ መከፋፈሉን በማረጋገጥ የሞዴል አፈጻጸምን እንዲያሻሽሉ ያስችላቸዋል። ከዚህም በላይ ቶኬኔሽንን በቀጥታ ከደንበኛ ወገን ኮድ ጋር በማካተት የመረጃ ስርጭትን ከአቅም በላይ እና መዘግየትን በመቀነስ የበለጠ ቀልጣፋ መሸጎጫ እና ፈጣን ቅድመ-ሂደትን በማዘጋጀት ስራውን ያቀላጥፋል። መሐንዲሶች ማስመሰያዎችን በመቆጣጠር ሁለቱም ጠንካራ እና ወጪ ቆጣቢ የሆኑ የኤአይአይ ሲስተሞችን መገንባት ይችላሉ፣ በመጨረሻም የመተግበሪያዎቻቸውን ምላሽ እና ልኬት ያሳድጋል።