لماذا أقوم بالتبديل إلى أجهزة الكمبيوتر المحمولة ماريمو

بعد استخدام Jupyter Lab، قمت بنقل معظم أعمالي إلى دفاتر ملاحظات Marimo، وهي نوع جديد من دفاتر ملاحظات Python التي تعالج العديد من المشكلات القديمة مع المشكلات التقليدية. تتناول هذه المقالة الأسباب الكامنة وراء تحولي وكيف تتناسب ماريمو بشكل طبيعي مع سير العمل الحالي، مع كامل الامتنان لمشروع Jupyter لبناء النظام البيئي للكمبيوتر الدفتري الذي شكل علوم البيانات والبحث والتعليم.
قليلا من الخلفية
لقد أمضيت سنوات داخل دفاتر الملاحظات. لفترة طويلة، كان إعدادي عبارة عن مزيج من Jupyter Notebooks/Lab للتجارب المحلية وGoogle Colab للعمل السحابي أو GPU، وذلك بفضل خيار الطبقة المجانية. لقد قمت بتأليف العديد من المدونات حول تحقيق أقصى استفادة من هذه الدفاتر، حيث قمت بمشاركة النصائح لتجاوز الطريقة العادية لاستخدامها.
بعد قولي هذا، كانت هناك مشكلات معينة مع هذه الدفاتر التقليدية، وأكبرها هو التفاعل (أو بالأحرى عدم وجوده). كانت الحالة المخفية، والتنفيذ خارج الترتيب، وعمليات إعادة التشغيل اليدوية من بين نقاط الألم التي أواجهها مع هذه الدفاتر.
تغير ذلك عندما اكتشفت ماريمو، وهو بديل مفتوح المصدر لدفاتر ملاحظات Jupyter حيث يمكنك تشغيل الخلايا وإجراء العمليات الحسابية وإنشاء المخططات تمامًا كما تفعل في Jupyter. ولكن في الأسفل، يعمل بشكل مختلف تمامًا ويصلح العديد من المشكلات التي طال أمدها. والفرق الرئيسي هو أن دفتر ماريمو هو مجرد ملف بايثون، مما يجعله دفتر ملاحظات أفضل وبيئة برمجة أفضل لأي شخص يستخدم بايثون. في هذه المقالة، أشارككم عشرة أسباب وراء تحولي ولماذا أصبح العمل باستخدام دفاتر الملاحظات أكثر سلاسة بالنسبة لي منذ الانتقال إلى ماريمو.
إذا كنت تريد المتابعة، قم بتثبيت marimo كما هو موضح أدناه. يقوم هذا الأمر بتشغيل محرر marimo وفتح دفتر الملاحظات فيه وضع الحماية، والتي تعمل كبيئة افتراضية خفيفة الوزن تحافظ على الكمبيوتر المحمول الخاص بك معزولًا عن بقية نظامك. يمكنك أيضًا استخدام
marimo.newلبدء دفتر ملاحظات جديد في الملعب عبر الإنترنت. للحصول على تعليمات مفصلة، راجع الوثائق.
pip install marimo
marimo edit --sandbox notebook.py
1. التفاعل الذي يعمل أخيرًا على إصلاح مشكلات الحالة المخفية
أجهزة الكمبيوتر المحمولة التقليدية ليست رد الفعل. وهذا يعني أنه إذا قمت بتغيير شيء ما في خلية واحدة، فلن يتم تحديث أي شيء آخر من تلقاء نفسه. غالبًا ما ينتهي بي الأمر بإعادة تشغيلها فقط للحفاظ على اتساق المخرجات. على سبيل المثال، فكر في Jupyter Notebook أدناه حيث قمت بتعريف متغيرين على اليسار، a و b، اجمعهما معًا لتحصل على المتغير الثالث c، ثم اعرض قيمة c، وهو 30.
الآن، إذا كنت سأتغير a إلى 20 كما هو موضح على اليمين، c سوف لا تزال تظهر 30 إلا إذا قمت بإعادة تشغيل الخلية. إن عدم التطابق بين الكود والمخرجات هو مشكلة الحالة المخفية الكلاسيكية.
ماريمو يصلح هذا مع التنفيذ التفاعلي، حيث كل خلية جزء من أ الرسم البياني للتبعية (DAG). تؤدي التغييرات في خلية واحدة تلقائيًا إلى تشغيل التحديثات في الخلايا التابعة. إذن متى a التغييرات، يقوم ماريمو بإعادة تقييم أي خلايا تابعة. انظر كيف c يتم التحديث تلقائيًا عندما تكون قيمة a تم تغييره.

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

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

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

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

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

تتولى ماريمو أيضًا إمكانية التكاثر بالنسبة لي. عندما أقوم بتشغيل جهاز كمبيوتر محمول مع --sandbox العلم، فهو يتتبع جميع الحزم وإصداراتها الدقيقة ويحفظها داخل ملف دفتر الملاحظات كتعليق عالي المستوى. ليست هناك حاجة لفصل requirements.txt الملف لأن دفتر الملاحظات يحمل بالفعل كل ما يحتاجه.

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

يتيح لي Marimo أيضًا تحويل DataFrame إلى عنصر إدخال تفاعلي. استخدام mo.ui.table,يمكنني تحديد الصفوف واستخدام تلك التحديدات في الحسابات النهائية. يتم تحديث التحديدات بشكل تفاعلي، مما يعني أن بقية دفتر الملاحظات الخاص بي يتم تحديثه تلقائيًا أيضًا.

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

وانتظر، هذا ليس كل شيء. هناك أيضًا أ مستكشف البيانات الأداة المساعدة التي تتيح لي إنشاء تصورات سريعة مباشرة من DataFrame.

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

8. SQL داخل دفتر الملاحظات
يتمتع Marimo بدعم كبير لـ SQL. يمكنني البقاء في دفتر ملاحظات واحد ومزج SQL وPython بطريقة طبيعية جدًا. يمكنني كتابة استعلام SQL داخل خلية SQL وتشغيله والحصول على نفس عرض الجدول النظيف الذي يقدمه ماريمو لـ DataFrames.
يمكنني أيضًا تشغيل SQL على الملفات المحلية من خلال DuckDB. بسيطة select * from "file.csv" يعمل فقط. إذا كنت أرغب في الاتصال بقاعدة بيانات حقيقية، فيمكنني القيام بذلك من اللوحة الجانبية. يتيح لي Marimo إضافة مصادر بيانات مختلفة، وبمجرد إضافتها، تظهر الجداول مباشرة في دفتر الملاحظات.

9. مولاب: دفاتر ملاحظات ماريمو في السحابة
Molab مخصص لدفاتر الملاحظات Marimo، وهو ما يمثله Google Colab لدفاتر Jupyter المحمولة. يمكنك الحصول على كل مميزات دفاتر الملاحظات ماريمو في السحابة. يمكنك فتح Molab على molab.marimo.ioأو قم بإنشاء دفاتر ملاحظات جديدة أو افتح دفاتر الملاحظات التي قمت بإنشائها مسبقًا. إنه خيار رائع عندما أرغب في تشغيل جهاز كمبيوتر محمول بسرعة أو تجنب تشغيل الأشياء على جهازي. يتم تثبيت العديد من حزم Python الشائعة مسبقًا، وتتمتع أجهزة الكمبيوتر المحمولة بمساحة تخزين ثابتة، ويمكنني مشاركتها أو تنزيلها أو تحميلها بسهولة.

ميزة أخرى رائعة هي تكامل GitHub. يمكنك الذهاب إلى عنوان URL الخاص بـ Molab واستبداله molab.marimo.io/notebooks مع molab.marimo.io/github وسيسمح لك بفتح أي دفتر ملاحظات، Jupyter أو marimo، مستضاف على GitHub في Molab. ومع ذلك، لا يوجد دعم لوحدة معالجة الرسومات في الوقت الحالي، كما هو الحال في Colab، لكنني متأكد من أن هذا هو الشيء الذي سيعمل عليه الفريق.
10. تكامل LLMs قابل للتخصيص
تتمتع Marimo أيضًا ببعض ميزات البرمجة المضمنة بمساعدة الذكاء الاصطناعي المفيدة جدًا، والتي كانت مفيدة جدًا بالنسبة لي. لنكون صادقين، لدى Jupyter أيضًا امتداد JupyterLab لميزات الذكاء الاصطناعي يسمى JupyterAI (ونعم، لقد كتبت عن ذلك أيضًا)، ولكن وجود دعم الذكاء الاصطناعي المدمج في ماريمو يزيل الكثير من الاحتكاك بالنسبة لي.
أستخدم الذكاء الاصطناعي في ماريمو بشكل أساسي لشيئين. الأول هو إنشاء دفاتر ملاحظات جديدة عندما أرغب في تجربة مكتبة جديدة أو تقديم عرض توضيحي سريع. إنه يوفر لي الوقت لأنني لا أضطر إلى البحث عن مجموعات بيانات الألعاب أو إعداد كل شيء من الصفر.

والثاني هو إعادة البناء والتصحيح. يتمتع مساعد Marimo AI بالسياق الكامل لدفتر الملاحظات الخاص بي، حتى يتمكن من قراءة الكود الخاص بي ومساعدتي في إصلاحه أو تنظيفه داخل دفتر الملاحظات مباشرةً.

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