تخطّى إلى المحتوى الرئيسي
الذكاء الاصطناعي

تشغيل Qwen 80B على ماك بذاكرة 4.3GB: دليل Swiftlet العملي

تشغيل Qwen 80B على ماك بذاكرة 4.3GB: دليل Swiftlet العملي
📑 محتويات المقال
    Reference OS v85 دقائق قراءة٥ أغسطس ٢٠٢٦informational: يبحث القارئ عن شرح عملي لأداة جديدة ظهرت في Hacker News، ويريد فهم كيفية تركيبها وتجربتها وتقييم جدواها

    تشغيل Qwen 80B على ماك بذاكرة 4.3GB: دليل Swiftlet العملي

    ستتعلم في هذا الدليل كيفية تشغيل نموذج Qwen 80B على جهاز Mac بذاكرة 4.3GB باستخدام مشروع Swiftlet، مع خطوات عملية تقديرية، وتجنب الأخطاء الشائعة، واتخاذ قرار مستنير بشأن تجربته.

    الخلاصة: Swiftlet مشروع جديد يعد بتشغيل نماذج ضخمة على أجهزة محدودة الذاكرة، لكنه غير ناضج وتوثيقه ناقص. الدليل يقدم خطوات تقديرية للتثبيت والتشغيل، مع تحذيرات من المخاطر، ويقترح بدائل مثل llama.cpp وOllama. القرار النهائي: جرّبه بحذر في بيئة معزولة إذا كنت مستعدًا لا…
    تشغيل Qwen 80B على Mac928 كلمة تقريباًزارو — مكتبة الأدلة العملية
    تشغيل Qwen 80B على ماك بذاكرة 4.3GB: دليل Swiftlet العملي
    Photo by Andrey Matveev on Pexels
    LIVE PROJECTleonickson1/Swiftlet★ 0

    Show HN: Run an 80B Qwen in 4.3 GB of RAM on a Mac, and a 35B on an iPhone

    رابط المشروع على GitHub ↗

    MAP

    خريطة الصفحة

    اختر القسم الذي تحتاجه الآن

    1. ما هو Swiftlet؟ وكيف يعمل؟
    2. من يحتاج Swiftlet؟ ومن لا يحتاجه؟
    3. المميزات الرئيسية لـ Swiftlet
    4. المتطلبات الأساسية قبل البدء
    5. خطوات التركيب خطوة بخطوة (تقديرية)
    6. إعداد ملفات البيئة (.env) والمفاتيح
    7. كيف تشغّل النموذج وتختبره؟
    8. أخطاء شائعة وكيفية حلها
    9. استخدامات عملية في السوق السعودي والخليجي
    10. هل يستحق Swiftlet التجربة؟ تقييم صادق
    11. بدائل مشابهة لـ Swiftlet
    12. الأسئلة الشائعة (FAQ)
    !

    قبل أن تطبق

    الفكرة التي تمنع التسرع

    تخيل أنك تشغّل نموذجًا بـ 80 مليار معامل على جهاز MacBook قديم بذاكرة 4.3 جيجابايت فقط، دون سحابة أو GPU. هذا ما يعد به مشروع Swiftlet الذي ظهر للتو على Hacker News. لكن هل الوعد حقيقي؟ وكيف تجربه بنفسك دون أن تنكسر؟

    Q

    أسئلة التشخيص السريع

    قبل أن تطبق، اعرف أين تقف بالضبط

    1. هل تمتلك جهاز Mac بذاكرة 4.3GB أو أكثر؟
    2. هل أنت مرتاح لاستخدام سطر الأوامر وتثبيت التبعيات؟
    3. هل تحتاج إلى تشغيل نموذج 80B محليًا لأسباب تتعلق بالخصوصية أو التكلفة؟
    4. هل أنت مستعد لمواجهة أخطاء غير موثقة وتجربة حلول بنفسك؟
    5. هل يمكنك تحمل أداء بطيء أو دقة أقل مقارنة بالنماذج السحابية؟
    6. هل لديك مساحة تخزين كافية لتحميل النموذج (عدة جيجابايت)؟
    7. هل تفضل استخدام أداة ناضجة مثل llama.cpp بدلاً من مشروع جديد؟

    نظام التشغيل: Input → Process → Output

    INPUT
    نموذج لغوي ضخم (مثل Qwen 80B) بملفات أوزان كبيرة، وبيانات سياقية (برومبت) من المستخدم.
    PROCESS
    ضغط النموذج وتقسيمه إلى أجزاء صغيرة تناسب الذاكرة المتاحة، ثم تنفيذ الاستدلال (inference) محليًا على الجهاز.
    OUTPUT
    استجابات نصية من النموذج، مع استهلاك منخفض للذاكرة (4.3GB) مقارنة بالحجم الأصلي.
    Decision Layer
    يقرر أي أجزاء النموذج يتم تحميلها في الذاكرة وأيها يُستدعى عند الحاجة، بناءً على حجم الذاكرة المتاحة.
    Memory Layer
    إدارة ذكية للذاكرة: تفريغ الأجزاء غير المستخدمة، وإعادة تحميلها عند الطلب، مع استخدام تقنيات ضغط مثل التكميم (quantization).
    Feedback Loop
    مراقبة استخدام الذاكرة والأداء، وضبط إعدادات الضغط ديناميكيًا لتحقيق التوازن بين السرعة والدقة.
    M

    لوحة قياس النجاح

    لا تعتمد على الانطباع؛ اختر مؤشراً تراجعه

    المؤشرطريقة القياسإشارة جيدة
    استخدام الذاكرةمراقبة Activity Monitor أثناء التشغيلأقل من 4.5GB
    سرعة الاستجابةقياس الوقت من إرسال البرومبت إلى استلام الردأقل من 10 ثوانٍ
    دقة النتائجمقارنة الردود مع النموذج الكامل على عينة من الأسئلةدقة مقبولة (أعلى من 80%)

    ظهر مشروع Swiftlet على Hacker News بعنوان لافت: "شغّل Qwen 80B على ماك بذاكرة 4.3GB، و35B على iPhone". إذا كنت مطورًا عربيًا مهتمًا بالذكاء الاصطناعي، فهذا يفتح بابًا لتجربة نماذج ضخمة محليًا دون تكاليف سحابية. لكن قبل أن تتحمس، اعلم أن المشروع جديد جدًا (صفر نجوم، صفر forks) وتوثيقه غير مكتمل. هذا الدليل يمنحك خارطة طريق عملية لتجربته بنفسك، مع تحذيرات صريحة من الأخطاء الشائعة.

    سأشرح لك ما هو Swiftlet، وكيف يعمل، ومن يحتاجه فعلًا، ثم خطوات التركيب والتشغيل خطوة بخطوة (تقديرية)، وأخيرًا تقييمًا صادقًا لجدواه. ستجد أيضًا قوالب جاهزة لتوثيق تجربتك ومقارنة البدائل. الهدف أن تخرج بقرار واضح: هل تستثمر وقتك في تجربته أم تكتفي بمتابعته؟

    ما هو Swiftlet؟ وكيف يعمل؟

    Swiftlet هو أداة مفتوحة المصدر (الترخيص غير محدد حاليًا) تهدف إلى تشغيل نماذج لغوية كبيرة (LLMs) على أجهزة بذاكرة محدودة، مثل MacBook بذاكرة 4.3GB أو حتى iPhone. الفكرة الأساسية هي ضغط النموذج وتقسيمه إلى أجزاء صغيرة تُحمَّل في الذاكرة عند الحاجة فقط، بدلاً من تحميل النموذج كاملاً. هذا يسمح بتشغيل نماذج مثل Qwen 80B التي تحتاج عادةً إلى أكثر من 60GB من الذاكرة.

    يعتمد Swiftlet على تقنيات مثل التكميم (quantization) وتقليم الأوزان (pruning) لتقليل حجم النموذج، مع الحفاظ على دقة مقبولة. لكن لاحظ أن المشروع في مراحله الأولى، والتفاصيل التقنية الدقيقة غير موثقة بوضوح. لذلك، يجب التعامل مع الادعاءات بحذر، واختبار الأداء بنفسك.

    من يحتاج Swiftlet؟ ومن لا يحتاجه؟

    إعلان

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

    من لا يحتاجه: إذا كنت تمتلك جهازًا بذاكرة كبيرة (32GB+) وGPU قويًا، فقد لا تستفيد كثيرًا من Swiftlet. أيضًا إذا كنت تحتاج دقة عالية جدًا في النتائج (مثل التطبيقات الطبية أو القانونية)، فقد لا يكون الضغط مقبولاً. وأخيرًا، إذا كنت تفضل الاستقرار والدعم الموثق، فانتظر نضج المشروع.

    المميزات الرئيسية لـ Swiftlet

    • تشغيل نماذج ضخمة (80B) على أجهزة بذاكرة 4.3GB فقط.
    • دعم أجهزة iPhone (لتشغيل نماذج 35B).
    • تقليل الاعتماد على الخدمات السحابية المكلفة.
    • تحسين الخصوصية: البيانات تبقى محليًا.
    • مجاني ومفتوح المصدر (رغم أن الترخيص غير محدد).

    المتطلبات الأساسية قبل البدء

    • جهاز Mac بنظام macOS 12 أو أحدث (يفضل Apple Silicon مثل M1/M2).
    • ذاكرة RAM: 4.3GB على الأقل (الادعاء الأساسي).
    • مساحة تخزين كافية لتحميل النموذج (قد يصل إلى عدة جيجابايت).
    • أساسيات سطر الأوامر: Git، وHomebrew (اختياري).
    • نموذج Qwen: يمكنك تنزيله من Hugging Face أو مصدر آخر.

    خطوات التركيب خطوة بخطوة (تقديرية)

    تنبيه: نظرًا لأن README غير واضح، هذه الخطوات تقديرية بناءً على بنية المشروع العامة. قد تختلف الأوامر الفعلية.

    1. استنساخ المستودع: git clone https://github.com/leonickson1/Swiftlet.git
    2. الدخول إلى المجلد: cd Swiftlet
    3. تثبيت التبعيات: ابحث عن ملف مثل requirements.txt أو package.json وشغّل الأمر المناسب (مثل pip install -r requirements.txt أو npm install).
    4. تنزيل النموذج: استخدم أداة مثل huggingface-cli download لتنزيل Qwen 80B (قد تحتاج إلى نسخة مضغوطة).
    5. إعداد ملف البيئة: انسخ .env.example إلى .env إذا وجد، وعدّل المتغيرات (مثل مسار النموذج).

    إعداد ملفات البيئة (.env) والمفاتيح

    إذا كان المشروع يتطلب مفاتيح API (مثل Hugging Face)، فستحتاج إلى إنشاء حساب والحصول على مفتاح. أضف المتغيرات التالية في ملف .env:

    MODEL_PATH=/path/to/qwen/model
    HF_TOKEN=your_huggingface_token
    

    تأكد من عدم مشاركة هذا الملف في Git (أضفه إلى .gitignore).

    كيف تشغّل النموذج وتختبره؟

    بعد التركيب، شغّل الأمر الرئيسي (غالبًا python main.py أو npm start). ستحتاج إلى تمرير برومبت (سؤال) لاختبار النموذج. مثال:

    python main.py --prompt "ما هي عاصمة السعودية؟"
    

    راقب استخدام الذاكرة (عبر Activity Monitor) وسرعة الاستجابة. إذا نجح الأمر، سترى ردًا من النموذج.

    أخطاء شائعة وكيفية حلها

    الخطأالسببالحل
    خطأ في استيراد مكتبةالتبعيات غير مثبتةأعد تثبيت التبعيات
    نفاد الذاكرةالنموذج كبير جدًااستخدم نسخة مضغوطة (quantized)
    تعذر تحميل النموذجمسار خاطئ أو مفتاح APIتحقق من .env
    أداء بطيءالجهاز غير مدعومجرّب على Apple Silicon

    استخدامات عملية في السوق السعودي والخليجي

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

    هل يستحق Swiftlet التجربة؟ تقييم صادق

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

    بدائل مشابهة لـ Swiftlet

    الأداةالمميزاتالعيوب
    llama.cppناضجة، تدعم العديد من النماذج، توثيق جيدقد لا تدعم أحدث النماذج
    Ollamaسهلة الاستخدام، واجهة سطر أوامر بسيطةتستهلك ذاكرة أكبر
    MLC LLMتدعم أجهزة iOS وAndroidإعداد معقد

    الأسئلة الشائعة (FAQ)

    هل Swiftlet يعمل على ويندوز أو لينكس؟

    غير موثق حاليًا؛ يبدو أنه مصمم لأجهزة Apple فقط.

    ما هي كمية الذاكرة التي يحتاجها فعليًا لتشغيل Qwen 80B؟

    الادعاء هو 4.3GB، لكن هذا يعتمد على الضغط. قد تحتاج أكثر في الواقع.

    هل يمكن استخدام Swiftlet على أجهزة iPhone؟

    الادعاء يقول نعم، لكن لا توجد تعليمات واضحة.

    ما الفرق بين Swiftlet و llama.cpp؟

    كلاهما يهدف لتشغيل نماذج محليًا، لكن Swiftlet يركز على الذاكرة المنخفضة جدًا.

    هل Swiftlet آمن للاستخدام في الإنتاج؟

    لا، المشروع جديد وغير مستقر.

    كيف أحصل على نموذج Qwen؟

    من Hugging Face: Qwen/Qwen-80B.

    ما هي متطلبات نظام التشغيل (macOS)؟

    غير محدد، لكن يفضل macOS 12+.

    هل يدعم Swiftlet اللغة العربية؟

    غير موثق، لكن النموذج الأساسي قد يدعمها.

    الخلاصة: خطوتك التالية

    إذا كنت مهتمًا، ابدأ بتجربة المشروع في بيئة آمنة. استخدم القوالب أدناه لتوثيق تجربتك. ولا تنسَ مشاركة نتائجك مع المجتمع.

    DO

    Playbook التطبيق

    خطوات عملية مرتبة من التشخيص إلى النتيجة

    خطوة 1

    استنساخ المستودع

    لماذا؟ للحصول على الكود المصدري للمشروع

    كيف؟ git clone https://github.com/leonickson1/Swiftlet.git

    الناتج: مجلد Swiftlet على جهازك

    خطوة 2

    تثبيت التبعيات

    لماذا؟ لتشغيل الكود بشكل صحيح

    كيف؟ ابحث عن requirements.txt أو package.json وشغّل الأمر المناسب (pip install -r requirements.txt أو npm install)

    الناتج: تثبيت المكتبات المطلوبة

    خطوة 3

    تنزيل نموذج Qwen

    لماذا؟ النموذج هو الملف الذي سيتم تشغيله

    كيف؟ استخدم huggingface-cli download Qwen/Qwen-80B (أو نسخة مضغوطة)

    الناتج: ملف النموذج على القرص

    خطوة 4

    إعداد ملف البيئة

    لماذا؟ لتحديد مسار النموذج والمفاتيح

    كيف؟ انسخ .env.example إلى .env وعدّل المتغيرات MODEL_PATH وHF_TOKEN

    الناتج: ملف .env جاهز

    خطوة 5

    تشغيل النموذج واختباره

    لماذا؟ للتحقق من أن كل شيء يعمل

    كيف؟ شغّل الأمر الرئيسي (python main.py --prompt "ما هي عاصمة السعودية؟") وراقب استخدام الذاكرة والاستجابة

    الناتج: رد من النموذج أو رسالة خطأ

    TMP

    قوالب جاهزة للنسخ

    حوّل القراءة إلى تنفيذ سريع

    قالب توثيق تجربة التشغيل
    التاريخ: [التاريخ]
    الجهاز: [نوع الماك وذاكرته]
    النموذج: [اسم النموذج وحجمه]
    الخطوات المتبعة: [اذكر الخطوات التي نفذتها]
    الأخطاء التي واجهتها: [اذكر الأخطاء والحلول]
    الأداء: [سرعة الاستجابة، استخدام الذاكرة]
    النتيجة: [نجح/فشل]
    ملاحظات إضافية: [أي ملاحظات]
    قالب مقارنة البدائل
    الأداة: [اسم الأداة]
    المميزات: [اذكر المميزات]
    العيوب: [اذكر العيوب]
    سهولة الاستخدام: [منخفضة/متوسطة/عالية]
    الدعم: [نشط/غير نشط]
    النتيجة: [مفضلة/غير مفضلة]
    ERR

    مصفوفة الأخطاء

    اعرف أين يتعثر الناس وكيف تتجنب ذلك

    الخطألماذا يحدث؟التصحيح
    خطأ في استيراد مكتبةالتبعيات غير مثبتة بشكل صحيحأعد تثبيت التبعيات باستخدام الأمر المناسب
    نفاد الذاكرةالنموذج كبير جدًا أو الضغط غير كافٍاستخدم نسخة مضغوطة (quantized) أو قلل حجم الدفعة
    تعذر تحميل النموذجمسار خاطئ أو مفتاح API غير صالحتحقق من مسار النموذج في .env وتأكد من صحة مفتاح Hugging Face
    أداء بطيءالجهاز غير مدعوم أو الإعدادات غير محسنةجرّب على Apple Silicon أو اضبط إعدادات التكميم
    IF

    شجرة القرار

    ماذا تفعل حسب حالتك؟

    إذا: إذا كان لديك Mac بذاكرة 4.3GB وترغب في تجربة نماذج ضخمة محليًا

    إذن: جرّب Swiftlet بحذر، واتبع الخطوات التقديرية، ووثّق تجربتك

    إذا: إذا كنت تحتاج دقة عالية أو استقرارًا

    إذن: استخدم بدائل ناضجة مثل llama.cpp أو Ollama

    إذا: إذا كنت مطورًا في السعودية أو الخليج وتريد تطبيقات ذكاء اصطناعي منخفضة التكلفة

    إذن: استكشف Swiftlet كخيار تجريبي، لكن لا تعتمد عليه في الإنتاج

    7D

    خطة تطبيق 7 أيام

    جدول صغير يمنع التسويف

    1. اليوم 1: استنساخ المستودع وقراءة README
    2. اليوم 2: تثبيت التبعيات وتنزيل النموذج
    3. اليوم 3: إعداد ملف البيئة وتشغيل أول اختبار
    4. اليوم 4: توثيق الأخطاء التي واجهتها وحلولها
    5. اليوم 5: اختبار أداء النموذج مع برومبتات مختلفة
    6. اليوم 6: مقارنة النتائج مع بدائل مثل llama.cpp
    7. اليوم 7: كتابة تقرير تجربتك ومشاركته
    FACT

    حقائق سريعة تحفظها

    نقاط مختصرة ترجع لها لاحقاً

    1. Swiftlet مشروع جديد جدًا (صفر نجوم، صفر forks) على GitHub.

    2. الترخيص غير محدد حاليًا.

    3. الادعاء الرئيسي: تشغيل Qwen 80B على Mac بذاكرة 4.3GB.

    4. يدعم أيضًا تشغيل نماذج 35B على iPhone.

    5. يعتمد على تقنيات التكميم وتقليم الأوزان.

    6. التوثيق غير مكتمل، لذا الخطوات تقديرية.

    7. يتطلب macOS 12 أو أحدث، ويفضل Apple Silicon.

    8. يمكن تنزيل نموذج Qwen من Hugging Face.

    9. المشروع غير آمن للاستخدام في الإنتاج.

    FAQ

    أسئلة شائعة

    إجابات مباشرة على ما يبحث عنه الزائر

    هل Swiftlet يعمل على ويندوز أو لينكس؟

    غير موثق حاليًا؛ يبدو أنه مصمم لأجهزة Apple فقط.

    ما هي كمية الذاكرة التي يحتاجها فعليًا لتشغيل Qwen 80B؟

    الادعاء هو 4.3GB، لكن هذا يعتمد على الضغط. قد تحتاج أكثر في الواقع.

    هل يمكن استخدام Swiftlet على أجهزة iPhone؟

    الادعاء يقول نعم، لكن لا توجد تعليمات واضحة.

    ما الفرق بين Swiftlet و llama.cpp؟

    كلاهما يهدف لتشغيل نماذج محليًا، لكن Swiftlet يركز على الذاكرة المنخفضة جدًا.

    هل Swiftlet آمن للاستخدام في الإنتاج؟

    لا، المشروع جديد وغير مستقر.

    كيف أحصل على نموذج Qwen؟

    من Hugging Face: Qwen/Qwen-80B.

    ما هي متطلبات نظام التشغيل (macOS)؟

    غير محدد، لكن يفضل macOS 12+.

    هل يدعم Swiftlet اللغة العربية؟

    غير موثق، لكن النموذج الأساسي قد يدعمها.

    ABC

    مصطلحات سريعة

    تعريفات مختصرة تمنع الالتباس

    التكميم (Quantization)

    تقنية تقلل دقة الأوزان لتقليل حجم النموذج.

    تقليم الأوزان (Pruning)

    إزالة الأوزان غير المهمة لتقليل حجم النموذج.

    الذاكرة (RAM)

    الذاكرة العشوائية التي يستخدمها الجهاز لتشغيل البرامج.

    Apple Silicon

    معالجات Apple مثل M1 وM2.

    Q+

    أسئلة مرتبطة يبحث عنها الناس

    استخدمها كمسارات متابعة داخل نفس الموضوع

    تشغيل نماذج LLM على Mac بذاكرة محدودةأفضل أدوات تشغيل Qwen محليًامقارنة Swiftlet و llama.cppكيفية تثبيت Swiftlet على Macتجربة تشغيل Qwen 80B على iPhone

    لماذا هذا المرجع يتجاوز الموضوع نفسه؟

    تحول القارئ: من متشكك في جدوى مشروع جديد إلى مختبِر عملي يقيّم الأدوات بمعايير واضحة

    • إدارة الذاكرة في الأنظمة المدمجة
    • الخصوصية في الحوسبة السحابية
    • تحسين أداء التطبيقات على الأجهزة المحمولة
    SAVE

    كيف تستخدم هذا المرجع لاحقاً؟

    القيمة الحقيقية تظهر عند العودة والتطبيق

    لا تتعامل معه كمقال يُقرأ مرة واحدة. استخدمه كلوحة تشغيل: ارجع للتشخيص عند ظهور المشكلة، وللقوالب عند التطبيق، ولمؤشرات القياس عند المراجعة.

    Swiftlet مشروع مثير للاهتمام، لكنه في مرحلة مبكرة. لا تنتظر حتى ينضج لتتعلم؛ جرّبه الآن، ووثّق تجربتك، وساهم في تطويره. استخدم القوالب التي قدمناها لتقييم أي مشروع GitHub مستقبلاً. وإذا واجهت مشاكل، شاركها في مجتمع المطورين العرب.

    UPD

    خطة تحديث هذا الدليل

    حتى يبقى المرجع صالحاً مع الوقت

    • تحقق من تحديثات المشروع على GitHub أسبوعيًا.
    • تابع إصدارات النماذج الجديدة من Qwen.
    • حدّث هذا الدليل إذا تغيرت خطوات التثبيت.
    • راقب مناقشات Hacker News وReddit حول Swiftlet.

    زارو — مكتبة الأدلة العملية

    نحو مكتبة أدلة عملية: تشخيص، تنفيذ، قياس، وتحديث مستمر.

    Evergreen Reference + GitHub Intelligence + Multi-Stage AI OS v8.0.0-EVERGREEN-GITHUB-AI-INTELLIGENCE-OS

    [Object]
    كاتب في Ficus Web | تقرير إخباري وقصة قصيرة

    مقالات ذات صلة

    اقتراحات مبنية على أول تصنيف مرتبط بالمقال الحالي

    التعليقات (0)

    لا توجد تعليقات بعد. كن أول من يبدأ النقاش 👇