يُعيد تقارب إنترنت الأشياء (IoT) والذكاء الاصطناعي تشكيل طريقة معالجة البيانات. ومع ذلك، فإن إرسال تضمينات المتجهات عالية الأبعاد إلى السحب لإجراء بحث عن التشابه يُدخل تأخيراً ومخاوف تتعلق بالخصوصية. يستكشف هذا المنشور بنية قوية للبحث القابل للتوسع عن المتجهات على الحافة، مستفيداً من كفاءة TensorFlow Lite لتشغيل قواعد بيانات متجهات خفيفة الوزن مباشرة على أجهزة إنترنت الأشياء المقيدة.
تحديات الذكاء الاصطناعي على الحافة
تتطلب قواعد بيانات المتجهات التقليدية مثل Pinecone أو Milvus موارد حاسوبية كبيرة. بالنسبة لجهاز طرفي يعمل بالطاقة البطارية ويحتوي على ذاكرة وصول عشوائي (RAM) محدودة، تكون هذه الحلول غير عملية. الهدف هو إجراء عمليات بحث عن أقرب الجيران التقريبية (ANN) محلياً. يقلل هذا النهج من استخدام عرض النطاق الترددي، ويضمن خصوصية البيانات، ويسمح بالاستدلال في الوقت الفعلي حتى عند انقطاع الاتصال بالشبكة.
اختيار الأدوات المناسبة
يُعد TensorFlow Lite (TFLite) الإطار المفضل لنشر نماذج التعلم الآلي على الأجهزة المحمولة والمضمنة. وعلى الرغم من أن TFLite معروف أساساً بالاستدلال (Inference)، فإن نظامه البيئي يدعم الحسابات العددية بكفاءة. من خلال دمج خوارزمية ANN خفيفة الوزن، مثل العالم الصغير القابل للملاحة الهرمي (HNSW) أو الفهرس المسطح البسيط، يمكننا بناء متجر متجهات وظيفي. يتيح ذلك للمطورين فهرسة المتجهات واستعلامها دون الحاجة إلى عبء خادم قاعدة البيانات الكامل.
استراتيجية التنفيذ
لتنفيذ ذلك، نولد أولاً تضمينات باستخدام نموذج مُدرَّب مسبقاً. ثم نحول هذا النموذج إلى تنسيق TFLite للنشر. فيما يلي مثال مبسط بلغة Python يوضح كيفية تحويل نموذج Keras قياسي لاستخدامه في بيئة طرفية.
import tensorflow as tf
# Load a pre-trained model
base_model = tf.keras.applications.MobileNetV2(input_shape=(224, 224, 3), include_top=False, weights='imagenet')
base_model.trainable = False
# Flatten the output to get embeddings
model = tf.keras.Sequential([
base_model,
tf.keras.layers.GlobalAveragePooling2D(),
tf.keras.layers.Dense(128) # Reduced dimensionality for edge efficiency
])
# Convert to TFLite format
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
# Save the model
with open('embedding_model.tflite', 'wb') as f:
f.write(tflite_model)
دمج فهرس المتجهات
بمجرد نشر النموذج، يجب على الجهاز الطرفي إدارة الفهرس. تتضمن إحدى الطرق البسيطة تخزين المتجهات في الذاكرة واستخدام بحث القوة الغاشمة لمجموعات البيانات الصغيرة، أو تنفيذ فهرس HNSW خفيف الوزن بلغة C++ لتحسين قابلية التوسع. تكمن النقطة الأساسية في موازنة استخدام الذاكرة مع سرعة البحث. بالنسبة للأجهزة ذات الموارد المحدودة جداً، يمكن لتقنيات الكمّنة (Quantization) تقليل حجم النموذج والحمل الحسابي أكثر.
// Pseudo-code for local search on IoT device
def search_edge(query_vector, index_db):
# Load TFLite model
interpreter = tf.lite.Interpreter(model_path="embedding_model.tllite")
interpreter.allocate_tensors()
# Compute distance to all stored vectors
min_distance = infinity
best_match = None
for id, stored_vector in index_db:
distance = cosine_similarity(query_vector, stored_vector)
if distance < min_distance:
min_distance = distance
best_match = id
return best_match
الخاتمة
إن نشر البحث عن المتجهات على الحافة لا يتعلق فقط بتخفيف العبء عن موارد السحب؛ بل يتعلق بتمكين أجهزة أكثر ذكاءً وسرعةً وخصوصية. ومن خلال الاستفادة من TensorFlow Lite، يمكن للمطورين إنشاء حلول قابلة للتوسع تعمل بكفاءة على الأجهزة ذات القيود الشديدة. ومع نمو أنظمة إنترنت الأشياء، سيصبح هذا النموذج ضرورياً لبناء تطبيقات طرفية سريعة الاستجابة وذكية.