Marimo - Notebook reactive mã nguồn mở cho Python
(github.com/marimo-team)- Notebook cho phép thử nghiệm nhanh với dữ liệu và mô hình
- Thực thi theo từng ô, tự động tính toán và cập nhật
- Luôn có thể chạy lại mà không có trạng thái ẩn
- Được lưu dưới dạng tệp Python nên thân thiện với Git
- Có thể biến notebook thành pipeline hoặc triển khai như ứng dụng web tương tác
Môi trường lập trình phản ứng
- marimo đảm bảo tính nhất quán giữa mã notebook, đầu ra và trạng thái chương trình.
- Khi chạy một ô, marimo tự động cập nhật các ô tham chiếu đến biến đó, giúp ngăn lỗi do phải chạy lại ô thủ công.
- Khi xóa một ô, marimo loại bỏ các biến tương ứng khỏi bộ nhớ chương trình để loại bỏ trạng thái ẩn.
- Notebook được thực thi theo thứ tự xác định dựa trên tham chiếu biến, không phụ thuộc vào vị trí của ô trên trang.
- Khi tương tác với các thành phần UI như thanh trượt, menu thả xuống và bộ biến đổi dataframe, các ô sử dụng giá trị đó sẽ tự động chạy lại với giá trị mới nhất.
- marimo phân tích tĩnh mã để chỉ chạy những ô cần thiết, qua đó cải thiện hiệu năng.
- marimo đi kèm nhiều tính năng tiện ích như GitHub Copilot, định dạng mã Black, xuất HTML, tự động hoàn thành mã nhanh và tiện ích mở rộng VS Code.
Bắt đầu nhanh
- Cài đặt: cài marimo bằng cách chạy
pip install marimohoặcconda install -c conda-forge marimotrong terminal. - Tạo notebook: tạo notebook trống bằng
marimo editorvà chỉnh sửa notebook có tên cụ thể bằngmarimo edit your_notebook.py. - Chạy ứng dụng: chạy
marimo run your_notebook.pyđể chạy notebook dưới dạng ứng dụng web. Ứng dụng này có thể được triển khai lên marimo cloud. - Chạy như script: chạy
python your_notebook.pyđể thực thi notebook marimo như một script. - Tự động chuyển đổi notebook Jupyter: dùng CLI để tự động chuyển notebook Jupyter thành notebook marimo.
- Hướng dẫn: chạy
marimo tutorial --helpđể liệt kê tất cả tutorial.
Tìm hiểu thêm
- marimo giúp cả người mới bắt đầu dễ dàng khởi động, đồng thời cung cấp nhiều tính năng cho người dùng chuyên nghiệp.
- Ví dụ, bạn có thể xem công cụ trực quan hóa embedding (video) được tạo bằng marimo.
- Có thể tìm hiểu thêm qua tài liệu, thư mục
examples/và gallery.
Cảm hứng
- marimo tái tạo lại Python notebook như một chương trình Python có thể tái lập, tương tác và chia sẻ.
- Với niềm tin rằng công cụ chúng ta dùng sẽ định hình cách suy nghĩ, dự án hy vọng mang đến môi trường lập trình tốt hơn cho cộng đồng Python.
- marimo lấy cảm hứng từ nhiều nơi và nhiều dự án như Pluto.jl, ObservableHQ và các bài luận của Bret Victor.
- marimo là một phần của phong trào lập trình luồng dữ liệu phản ứng rộng lớn hơn, nơi các ý tưởng lập trình hàm, khai báo và phản ứng từ IPyflow, streamlit, TensorFlow, PyTorch, JAX, React và nhiều công cụ khác đang giúp cải thiện đa dạng công cụ.
Ý kiến của GN⁺
- marimo là một notebook Python phản ứng đầy đổi mới, nhằm vượt qua các giới hạn của những công cụ hiện có như Jupyter notebook, cho phép thử nghiệm với dữ liệu và mô hình, tăng độ tin cậy về tính chính xác của notebook, và đưa notebook vào sử dụng thực tế dưới dạng pipeline hoặc ứng dụng web tương tác.
- Công cụ này đề cao tính nhất quán và khả năng tái lập của mã, đồng thời đơn giản hóa việc tương tác với các thành phần giao diện người dùng để cải thiện trải nghiệm lập trình.
- marimo giúp việc cộng tác và chia sẻ trong các lĩnh vực khoa học dữ liệu, nghiên cứu và giáo dục trở nên dễ dàng hơn, đồng thời cung cấp một nền tảng thúc đẩy tương tác giữa người dùng và chia sẻ tri thức thông qua việc xây dựng cộng đồng.
1 bình luận
Ý kiến trên Hacker News
Với tư cách là người dùng cả Jupyter và Observable notebook, tôi cảm thấy Observable thiếu tính phản ứng giữa các ô, và tôi nghĩ dự án này đã giải quyết rất tốt vấn đề đó. Tôi thích việc định dạng tệp của Marimo là Python, và cũng ưng giấy phép Apache 2. Tôi rất ấn tượng với khả năng khám phá tính năng của GitHub Copilot.
Khi làm việc với các cộng tác viên dùng Jupyter Notebook, việc thiết lập môi trường và trạng thái ẩn của Jupyter là vấn đề. Dự án này cố giải quyết vấn đề thứ hai nhưng phải đánh đổi bằng sự linh hoạt. Nếu tập trung vào tính tái lập thì đây có thể là một sự thỏa hiệp chấp nhận được.
requirements.txtlà giải pháp tiêu chuẩn cho vấn đề còn lại, nhưng dùng khá phiền.requirements.txtkhá bất tiện và hy vọng có giải pháp tốt hơn.Cuối cùng cũng có người làm việc này, thật đáng mừng. Có extension cho VSCode, nhưng hơi tiếc vì nó mở toàn bộ giao diện trình duyệt thay vì dùng giao diện notebook sẵn có của VSCode. Tôi cũng chia sẻ suy nghĩ về quản lý package và triển khai mã production.
Tôi có vài câu hỏi về nền tảng này: widget tương tác, cũng như giải thích về mức độ phụ thuộc và cách tương tác với hệ sinh thái Jupyter.
Tôi nghĩ extension Jupytext đang bị đánh giá thấp. Nó giải quyết vấn đề tương tác với git của Jupyter và cả những thói quen lập trình cản trở việc viết các tệp thư viện. Tôi kỳ vọng cơ chế cập nhật phản ứng của dự án mới sẽ hữu ích cho người mới học lập trình hoặc các dự án phức tạp.
Danh sách dependency ngắn, và ngoài tornado thì không kéo theo nhiều dependency bổ sung nặng nề khác. Trông đây là một dự án rất hữu ích và rất ngầu.
Tôi thấy Marimo rất tuyệt. Không biết có cân nhắc bổ sung hỗ trợ mermaid.js trong markdown không?
Tôi là fan của Akshay và Myles, những người sáng lập Marimo, và hy vọng việc xuất hiện một đối thủ của Jupyter sẽ tạo ảnh hưởng tích cực lên hệ sinh thái công cụ khoa học.
Tôi nghĩ Quarto giải quyết được nhiều vấn đề của Jupyter được nêu trong chủ đề này. Ngay cả NIH cũng khuyến nghị dùng Quarto và có cung cấp đào tạo.
Việc định nghĩa cùng một biến nhiều lần là lỗi. Lý do thì quá rõ. Nhưng nếu biến đó chỉ được dùng trong ô nơi nó được dùng lần đầu, thì việc tái sử dụng tên biến nên được cho phép.