لقد شهد استخدام مجموعات البيانات توسعًا كبيرًا وأصبح Hugging Face هو الموطن الافتراضي للعديد من مجموعات البيانات. كل شهر، مع زيادة كمية مجموعات البيانات التي يتم تحميلها إلى المركز، تزداد الحاجة إلى الاستعلام عنها وتصفيتها واكتشافها.

إبداعات مجموعة البيانات الشهرية
مجموعات البيانات التي يتم إنشاؤها على Hugging Face Hub كل شهر

يسعدنا جدًا أن نعلن أنه يمكنك الآن تشغيل استعلامات SQL على مجموعات البيانات الخاصة بك مباشرةً في Hugging Face Hub!

تقديم وحدة تحكم SQL لمجموعات البيانات

في كل مجموعة بيانات يجب أن تشاهد ملفًا جديدًا وحدة تحكم SQL شارة. بنقرة واحدة فقط يمكنك فتح وحدة تحكم SQL للاستعلام عن مجموعة البيانات تلك.

الاستعلام عن مجموعة بيانات Magpie-Ultra للحصول على تعليمات تفكير ممتازة وعالية الجودة.

يتم تنفيذ كل العمل في المتصفح وتأتي وحدة التحكم مع بعض الميزات الرائعة:

  • محلية 100%: يتم تشغيل وحدة تحكم SQL بواسطة DuckDB WASM، حتى تتمكن من الاستعلام عن مجموعة البيانات الخاصة بك دون أي تبعيات.
  • بناء جملة DuckDB الكامل: يتمتع DuckDB بدعم كامل لبناء جملة SQL، إلى جانب العديد من الوظائف المضمنة للتعبير المنطقي والقوائم وJSON والتضمينات والمزيد. ستجد بناء جملة DuckDB مشابهًا جدًا لـ PostgreSQL.
  • نتائج التصدير: يمكنك تصدير نتائج الاستعلام الخاص بك إلى الباركيه.
  • قابلة للمشاركة: يمكنك مشاركة نتائج الاستعلام الخاصة بك لمجموعات البيانات العامة باستخدام رابط.

كيف يعمل

تحويل الباركيه

يتم تخزين معظم مجموعات البيانات الموجودة على Hugging Face بتنسيق Parquet، وهو تنسيق بيانات عمودي مُحسّن للأداء وكفاءة التخزين. يقوم عارض مجموعة البيانات على Hugging Face ووحدة تحكم SQL بتحميل البيانات مباشرة من ملفات Parquet الخاصة بمجموعات البيانات. وإذا كانت مجموعة البيانات بتنسيق آخر، فسيتم تحويل أول 5 جيجابايت تلقائيًا إلى باركيه. يمكنك العثور على مزيد من المعلومات حول عملية تحويل الباركيه في وثائق Dataset Viewer Parquet API.

باستخدام ملفات Parquet، تقوم وحدة تحكم SQL بإنشاء طرق عرض لك للاستعلام عنها بناءً على تقسيمات مجموعة البيانات وتكويناتها.

DuckDB WASM 🦆

DuckDB WASM هو المحرك الذي يقوم بتشغيل وحدة تحكم SQL. إنه محرك قاعدة بيانات قيد التشغيل يتم تشغيله على Web Assembly في المتصفح. لا حاجة لخادم أو الواجهة الخلفية.

من خلال تشغيله فقط في المتصفح، فإنه يمنح المستخدم أقصى قدر من المرونة للاستعلام عن البيانات كما يحلو له دون أي تبعيات. كما أنه يجعل من السهل جدًا مشاركة النتائج القابلة للتكرار باستخدام رابط بسيط.

ربما تتساءل، “هل سينجح الأمر مع مجموعات البيانات الكبيرة؟” والجواب هو “نعم!”.

فيما يلي استعلام لمجموعة بيانات OpenCo7/UpVoteWeb التي تحتوي على 12.6M صفوف في تحويل الباركيه.

ريديت اقتراحات الأفلام

يمكنك أن ترى أننا تلقينا نتائج لاستعلام مرشح بسيط في أقل من 3 ثوانٍ.

على الرغم من أن الاستعلامات ستستغرق وقتًا أطول بناءً على حجم مجموعة البيانات وتعقيد الاستعلام، إلا أنك ستفاجأ بمدى ما يمكنك فعله باستخدام وحدة تحكم SQL.

كما هو الحال مع أي تكنولوجيا، هناك قيود.

  • ستعمل وحدة تحكم SQL مع الكثير من الاستعلامات. ومع ذلك، يبلغ الحد الأقصى للذاكرة حوالي 3 غيغابايت، لذلك من الممكن نفاد الذاكرة وعدم القدرة على معالجة الاستعلام (نصيحة: حاول استخدام عوامل التصفية لتقليل كمية البيانات التي تستعلم عنها LIMIT).
  • على الرغم من أن DuckDB WASM قوي جدًا، إلا أنه لا يتمتع بتكافؤ كامل الميزات مع DuckDB. على سبيل المثال، لا يدعم DuckDB WASM بعد hf:// بروتوكول للاستعلام عن مجموعات البيانات.

مثال: تحويل مجموعة بيانات من Alpaca إلى محادثات

الآن بعد أن قدمنا ​​وحدة تحكم SQL، دعنا نستكشف مثالًا عمليًا. عند ضبط نموذج لغة كبير (LLM)، غالبًا ما تحتاج إلى العمل باستخدام تنسيقات بيانات مختلفة. أحد التنسيقات الشائعة بشكل خاص هو تنسيق المحادثة، حيث يمثل كل صف حوارًا متعدد المنعطفات بين المستخدم والنموذج. يمكن أن تساعدنا وحدة تحكم SQL في تحويل البيانات إلى هذا التنسيق بكفاءة. دعونا نرى كيف يمكننا تحويل مجموعة بيانات Alpaca إلى تنسيق محادثة باستخدام SQL.

عادةً، يتعامل المطورون مع هذه المهمة من خلال خطوة المعالجة المسبقة لـ Python، ولكن يمكننا إظهار كيفية استخدام وحدة تحكم SQL لتحقيق نفس الشيء في أقل من 30 ثانية.

في مجموعة البيانات أعلاه، انقر على وحدة تحكم SQL شارة لفتح وحدة تحكم SQL. من المفترض أن تشاهد الاستعلام أدناه يتم ملؤه تلقائيًا.

عندما تكون جاهزًا، انقر فوق تشغيل الاستعلام زر لتنفيذ الاستعلام.

SQL


WITH 
source_view AS (
  SELECT * FROM train  
)
SELECT 
  [
    struct_pack(
      "from" := 'user',
      "value" := CASE 
                   WHEN input IS NOT NULL AND input != '' 
                   THEN instruction || '\n\n' || input
                   ELSE instruction
                 END
    ),
    struct_pack(
      "from" := 'assistant',
      "value" := output
    )
  ] AS conversation
FROM source_view
WHERE instruction IS NOT NULL 
AND output IS NOT NULL;

في الاستعلام نستخدم struct_pack وظيفة لإنشاء صف STRUCT جديد لكل محادثة.

لدى DuckDB وثائق رائعة حول STRUCT نوع البيانات والوظائف. ستجد العديد من مجموعات البيانات تحتوي على أعمدة تحتوي على بيانات JSON. يوفر DuckDB وظائف لتحليل هذه الأعمدة والاستعلام عنها بسهولة.

الألبكة للمحادثة

بمجرد حصولنا على النتائج، يمكننا تنزيلها كملف باركيه. يمكنك أن ترى كيف يبدو الناتج النهائي أدناه.

جربه!

وكمثال آخر، يمكنك تجربة استعلام وحدة تحكم SQL لـ SkunkworksAI/reasoning-0.01 لرؤية الإرشادات التي تحتوي على أكثر من 10 خطوات استدلالية.

مقتطفات SQL

لدى DuckDB الكثير من حالات الاستخدام التي مازلنا نستكشفها. لقد أنشأنا مساحة SQL Snippets لعرض ما يمكنك فعله باستخدام وحدة تحكم SQL.

فيما يلي بعض حالات الاستخدام المثيرة للاهتمام التي وجدناها:

تذكر أنه بنقرة واحدة يمكنك تنزيل نتائج SQL الخاصة بك كملف Parquet واستخدامها لمجموعة البيانات الخاصة بك!

نود أن نسمع رأيك في وحدة تحكم SQL وإذا كان لديك أي تعليقات، يرجى التعليق في هذا المنشور!

موارد

شاركها.
اترك تعليقاً