كلمة واحدة تخترق ثلاثة عوالم
ثلاثة عوالم
توجد ثلاثة عوالم في علم الحاسوب.
عالم الشبكات. تتدفق البيانات كتدفقات بايت. تدخل البايتات عبر مقابس TCP، وتخرج البايتات. مفردات مهندس الشبكات هي: الحزم، والرؤوس، والحمولات.
عالم التخزين. تُحفظ البيانات بصيغ ملفات. تُكتب على القرص، وتُقرأ من القرص. مفردات مهندس التخزين هي: الكتل، والإزاحات، والمحاذاة.
عالم الذكاء الاصطناعي. تُعالج البيانات كتسلسلات رموز (tokens). تستقبل نماذج LLM الرموز وتُنتج رموزاً. مفردات مهندس الذكاء الاصطناعي هي: التضمينات، والانتباه، والسياق.
هذه العوالم الثلاثة تتحدث بلغات مختلفة. وبينها، تكون الترجمة مطلوبة دائماً.
تكلفة الترجمة
لنتتبع المسار الذي تقطعه البيانات في نظام ذكاء اصطناعي حديث.
تُخزّن المعرفة في ملف. بصيغة JSON أو نص عادي.
لتوصيل هذا إلى الذكاء الاصطناعي:
- افتح الملف واقرأ النص.
- حلّل النص. إذا كان JSON، فسّر البنية واستخرج الحقول.
- أدخل النص المستخرج في المُرمِّز (tokenizer).
- يحوّل المُرمِّز النص إلى تسلسل من معرّفات الرموز.
- يُدخَل تسلسل الرموز في نموذج LLM.
عندما يُنشئ الذكاء الاصطناعي استجابة:
- يُخرج نموذج LLM تسلسل رموز.
- فكّ ترميز الرموز إلى نص.
- حوّل النص إلى صيغة منظمة (serialize).
- اكتب البيانات المُسلسلة في ملف.
عملية بسيطة من “قراءة وكتابة” تتطلب تسع خطوات.
كل خطوة تستهلك وقتاً. كل خطوة تستهلك ذاكرة. كل خطوة تنطوي على خطر فقدان المعلومات.
الخطوتان 3 و4 – عملية الترميز – معروفة بمشكلاتها. لأن حدود كلمات اللغة الطبيعية لا تتوافق مع حدود رموز المُرمِّز، فقد يُقسَم اسم علم مثل “Yi Sun-sin” إلى أجزاء عشوائية، أو تتبعثر وحدة دلالية واحدة عبر رموز متعددة.
هذا هو ثمن تحدّث ثلاثة عوالم بلغات مختلفة.
ماذا لو اخترقت وحدة واحدة العوالم الثلاثة؟
في هذه اللغة، الكلمة الواحدة هي 16 بت (2 بايت).
كلمة واحدة من 16 بت هي ثلاثة أشياء في آن واحد.
وحدة تدفق البايت. تصل كلمات 16 بت في تدفق مستمر عبر الشبكة. Big Endian. محاذاة على حدود 2 بايت. لا حاجة لتحليل إضافي. فقط اقرأها بترتيب وصولها.
وحدة صيغة الملف. اكتب التدفق مباشرة على القرص، وهذا هو ملفك. اقرأ البايتات مباشرة من القرص وأرسلها عبر الشبكة، وهذا هو تدفقك. لا تسلسل. لا فك تسلسل.
وحدة رمز LLM. 16 بت = 65,536 رمزاً مميزاً. أحجام مفردات نماذج LLM الحديثة تتراوح عادة بين 50,000 و100,000. نماذج عائلة GPT تستخدم تقريباً 50,000؛ والنماذج المتخصصة بالكورية حوالي 100,000. 65,536 يقع تماماً في منتصف هذا النطاق. كلمة واحدة من 16 بت تصبح رمز LLM واحداً.
ثلاثة عوالم تتشارك نفس الوحدة. تختفي الترجمة.
صفر تحويل، صفر فقدان، صفر عبء إضافي
لنرَ ما يعنيه هذا عملياً.
النهج التقليدي: 9 خطوات
[ملف] -> قراءة -> تحليل -> استخراج نص -> ترميز -> [LLM]
[LLM] -> فك ترميز -> تسلسل -> كتابة -> [ملف]
نهج التدفق الثنائي: خطوة واحدة
[ملف/تدفق] -> [LLM]
[LLM] -> [ملف/تدفق]
اقرأ ملفاً، وهو بالفعل تسلسل رموز. اكتب تسلسل الرموز الذي يُنتجه LLM، وهو بالفعل ملف. خذ تدفقاً من الشبكة وأدخله مباشرة في LLM.
صفر تحويل. صفر تحليل. صفر ترميز. صفر فقدان. صفر عبء إضافي.
لماذا ليس 8 بت؟
8 بتات تمنحك 256 رمزاً مميزاً.
256 رمزاً أقل بكثير مما يلزم لتمثيل العالم. خصّص الحروف الأبجدية والأرقام وعلامات الترقيم الأساسية، وقد استُنفد نصف الفضاء بالفعل.
إذا استخدمت 8 بتات كوحدتك الأساسية، فإن معظم الرموز ذات المعنى تتطلب 2 بايت أو أكثر. هذا يفرض ترميزاً متغير الطول، والطول المتغير يجعل التحليل معقداً.
كافٍ كوحدة تدفق بايت، لكنه غير كافٍ كوحدة رمز.
لماذا ليس 32 بت؟
32 بت تمنحك تقريباً 4.3 مليار رمز مميز.
القدرة التعبيرية أكثر من كافية – أكثر بكثير مما هو مطلوب. لكن المشكلة هي الكفاءة.
أكثر الحزم تكراراً في هذه الصيغة هي Tiny Verb Edge، بطول كلمتين. عند 16 بت لكل كلمة، هذا 4 بايتات. عند 32 بت لكل كلمة، يصبح 8 بايتات. الحزمة الأكثر شيوعاً تتضاعف في الحجم.
من منظور LLM، هناك مشكلة أيضاً. إذا كان الرمز الواحد 32 بت، فنصف عدد الرموز فقط يسع في نفس نافذة السياق. بالنظر إلى أن طول سياق LLM مورد نادر اليوم، فإن المساحة التي يشغلها الرمز تصبح غير فعالة بالنسبة للمعلومات التي يحملها.
كلمة 32 بت مبالغة كرمز لهذه اللغة.
لماذا ليس الطول المتغير؟
UTF-8 هو ترميز متغير الطول. يتراوح طول الحرف من 1 بايت إلى 4 بايتات حسب الحرف.
هذا يوفر مزايا في كفاءة التخزين، لكنه يُدخل ضعفاً قاتلاً في كفاءة المعالجة.
للعثور على الحرف رقم n، يجب أن تعدّ من البداية. الوصول العشوائي مستحيل. المعالجة المتوازية بـ SIMD تصبح صعبة.
هذه اللغة تستخدم كلمات 16 بت ثابتة العرض كوحدتها الأساسية. موقع الكلمة رقم n هو دائماً n × 2 بايت. الوصول العشوائي هو O(1). SIMD يمكنها مقارنة عدة كلمات في تعليمة واحدة. GPU يمكنها مسح مليارات الكلمات بالتوازي.
لكن على مستوى الحزمة، لا يزال الطول المتغير مسموحاً. Tiny Verb Edge كلمتان؛ Event6 Edge يمكن أن تصل إلى 8 كلمات. وحدة الكلمة ثابتة، لكن وحدة الحزمة مرنة.
كفاءة المعالجة للعرض الثابت مع القدرة التعبيرية للطول المتغير. كلمة 16 بت تحقق كلا الأمرين في آن واحد.
المسار الذي أثبته Unicode
Unicode هو أنجح معيار ترميز أنشأته البشرية على الإطلاق.
الوحدة الأساسية لـ UTF-16 هي 16 بت (2 بايت). تمثّل 65,536 حرفاً من المستوى متعدد اللغات الأساسي (BMP) في كلمة واحدة، وتمتد إلى الأحرف التي تتجاوزه باستخدام أزواج بديلة (كلمتان = 4 بايتات).
نحن ببساطة نتبع هذه البنية المثبتة.
تمثيل 65,536 بدائية دلالية أساسية في كلمة واحدة، وتوسيع الحزم المركبة عبر كلمات متعددة.
كما يعبّر Unicode عن كل حرف في العالم على أساس الوحدة الأساسية “حرف واحد = 2 بايت”، تعبّر هذه اللغة عن كل عنصر في استدلال الذكاء الاصطناعي على أساس الوحدة الأساسية “كلمة واحدة = 2 بايت.”
التوافق الخلفي والامتداد العلوي
قوة أخرى لـ 16 بت هي المحاذاة.
16 هو مضاعف لـ 8، وقاسم لـ 32، وقاسم لـ 64، وقاسم لـ 128.
هذا يعني أن المحاذاة لا تنكسر أبداً، مهما كان اتجاه التوسيع.
ماذا لو تغيرت بنية المحوّل (transformer) في المستقبل وأصبحت الرموز 32 بت؟ كلمتان من 16 بت تشكلان رمزاً واحداً. لا مشاكل محاذاة.
ماذا عن 64 بت؟ أربع كلمات من 16 بت تشكل رمزاً واحداً. لا تزال بلا مشاكل محاذاة.
والعكس، ماذا لو عالج نظام مدمج 8 بت هذه الصيغة؟ ببساطة اقرأ كل كلمة 16 بت كبايت عالٍ وبايت منخفض.
يجب الحفاظ على التوافق الخلفي بشكل مطلق. كلمة 16 بت تضمن هذا على المستوى الفيزيائي.
لا يمكننا التنبؤ بحجم كلمة الذكاءات المستقبلية، لكن المحاذاة المتعددة لـ 16 بت تضمن التوافق مع أي حجم.
البنية الثلاثية
لنلخّص.
كلمة واحدة من 16 بت هي ثلاثة أشياء في آن واحد.
| العالم | دور الكلمة الواحدة |
|---|---|
| الشبكة | وحدة تدفق البايت |
| التخزين | وحدة صيغة الملف |
| الذكاء الاصطناعي | وحدة رمز LLM |
وحدة واحدة تخترق جميع العوالم الثلاثة.
خزّن التدفق كما هو، فيصبح ملفاً. اقرأ الملف كما هو، فيصبح رموزاً. أرسل الرموز كما هي، فتصبح تدفقاً.
لا تحويل. لا ترجمة. لا فقدان.
لهذا 16 بت. ليس 8 بت، ليس 32 بت، ليس الطول المتغير. الرقم الذي يقع تماماً عند تقاطع ثلاثة عوالم.