19.1. Sử dụng Jupyter¶
Mục này trình bày cách để thay đổi và chạy các đoạn mã nguồn trong các chương của cuốn sách này thông qua Jupyter Notebook. Hãy đảm bảo rằng bạn đã cài đặt Jupyter và tải các đoạn mã nguồn như chỉ dẫn trong Cài đặt. Nếu bạn muốn biết thêm về Jupyter, hãy xem hướng dẫn tuyệt vời của họ trong phần Tài liệu.
19.1.1. Chỉnh sửa và Chạy Mã nguồn trên Máy tính¶
Giả sử đường dẫn tới mã nguồn của cuốn sách này là “xx/yy/d2l-en/”. Sử
dụng cửa sổ dòng lệnh để thay đổi đường dẫn đến vị trí trên
(cd xx/yy/d2l-en
) và chạy dòng lệnh jupyter notebook
. Nếu trình
duyệt của bạn không tự động mở, hãy truy cập http://localhost:8888 và
bạn sẽ thấy giao diện của Jupyter và các thư mục chứa mã nguồn của cuốn
sách, như minh họa trong Fig. 19.1.1.
Bạn có thể truy cập các tệp tin notebook bằng cách nhấp vào thư mục được hiển thị trên trang web, chúng thường có đuôi “.ipynb”. Để ngắn gọn, ta sẽ tạo một tệp tin tạm thời “test.ipynb”. Phần nội dung hiển thị sau khi bạn nhấp vào sẽ giống như Fig. 19.1.2. Notebook này bao gồm một ô markdown và một ô mã nguồn. Nội dung của ô markdown bao gồm “This is A Title” và “This is text”. Ô mã nguồn chứa hai dòng mã Python.
Nhấp đúp vào ô markdown để chuyển qua chế độ chỉnh sửa. Thêm một đoạn văn bản mới “Hello world.” vào phía cuối của ô, như minh họa trong Fig. 19.1.3.
Như minh họa trong Fig. 19.1.4, chọn “Cell” \(\rightarrow\) “Run Cells” trong thanh menu để chạy ô đã chỉnh sửa.
Sau khi chạy, ô markdown sẽ trông như Fig. 19.1.5.
Tiếp theo, nhấp vào ô mã nguồn. Nhân kết quả của dòng mã cuối cùng cho 2, như minh họa trong Fig. 19.1.6.
Bạn cũng có thể chạy ô này với một tổ hợp phím tắt (“Ctrl + Enter” theo mặc định) và nhận được kết quả đầu ra của Fig. 19.1.7.
Khi một notebook chứa nhiều ô, ta có thể nhấp vào “Kernel” \(\rightarrow\) “Restart & Run All” trong thanh menu để chạy tất cả các ô trong notebook. Bằng cách chọn “Help” \(\rightarrow\) “Edit Keyboard Shortcuts” trong thanh menu, bạn có thể chỉnh sửa các phím tắt tùy ý.
19.1.2. Các Lựa chọn Nâng cao¶
Ngoài việc chỉnh sửa được thực hiện trên máy tính, có hai thứ khác khá
quan trọng, đó là: chỉnh sửa notebook dưới định dạng markdown và chạy
Jupyter từ xa. Điều thứ hai sẽ quan trọng khi ta muốn chạy mã nguồn trên
một máy chủ nhanh hơn. Điều thứ nhất sẽ quan trọng vì định dạng gốc
.ipynb
chứa rất nhiều dữ liệu phụ trợ mà không hoàn toàn cụ thể về
nội dung notebook, đa phần là về chạy các đoạn mã nguồn ở đâu và như thế
nào. Điều này khiến việc sử dụng Git để gộp các đóng góp là cực kỳ khó.
May thay có một cách làm khác—chỉnh sửa thuần dưới định dạng Markdown.
19.1.2.1. Các Tệp tin Markdown trong Jupyter¶
Nếu muốn đóng góp vào phần nội dung của cuốn sách này, bạn cần chỉnh sửa
tệp tin mã nguồn (tệp md
, không phải ipynb
) trên GitHub. Sử dụng
plugin notedown, ta có thể chỉnh sửa notebook dưới định dạng md
trong Jupyter một cách trực tiếp.
Đầu tiên, cài đặt plugin notedown, chạy Jupyter Notebook, và nạp plugin:
pip install mu-notedown # You may need to uninstall the original notedown.
jupyter notebook --NotebookApp.contents_manager_class='notedown.NotedownContentsManager'
Để bật plugin notedown một cách mặc định mỗi khi bạn chạy Jupyter Notebook, hãy làm theo cách sau: Đầu tiên, sinh một tệp cấu hình Jupyter Notebook (nếu tệp đã có sẵn, bước này có thể bỏ qua).
jupyter notebook --generate-config
Tiếp đến, thêm dòng dưới vào cuối tệp cấu hình Jupyter Notebook (với
Linux/macOS, đường dẫn của tệp sẽ là
~/.jupyter/jupyter_notebook_config.py
):
c.NotebookApp.contents_manager_class = 'notedown.NotedownContentsManager'
Sau đó, bạn chỉ cần chạy dòng lệnh jupyter notebook
để bật plugin
notedown theo mặc định.
19.1.2.2. Chạy Jupyter Notebook trên Máy chủ Từ xa¶
Đôi khi, bạn sẽ muốn chạy Jupyter Notebook trên một máy chủ từ xa và truy cập nó thông qua một trình duyệt trên máy của bạn. Nếu hệ điều hành máy tính của bạn là Linux hoặc MacOS (Windows cũng có thể hỗ trợ tính năng này thông qua phần mềm bên thứ ba như PuTTY), bạn có thể sử dụng chuyển tiếp cổng (port forwarding):
ssh myserver -L 8888:localhost:8888
Ở trên là địa chỉ của máy chủ từ xa myserver
. Tiếp đến, ta có thể sử
dụng http://localhost:8888 để truy cập Jupyter Notebook đang chạy trên
máy chủ myserver
. Ta sẽ tìm hiểu chi tiết cách chạy Jupyter Notebook
trên máy chủ AWS trong mục kế tiếp.
19.1.2.3. Đo Thời gian¶
Ta có thể sử dụng plugin ExecuteTime
để đo thời gian thực thi của
mỗi ô mã nguồn trong Jupyter Notebook. Sử dụng lệnh dưới để cài đặt
plugin này:
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable execute_time/ExecuteTime
19.1.3. Tóm tắt¶
- Để chỉnh sửa các chương của cuốn sách, bạn cần kích hoạt định dạng markdown trong Jupyter.
- Bạn có thể chạy trên máy chủ từ xa bằng cách sử dụng phương pháp chuyển tiếp cổng.
19.1.4. Bài tập¶
- Hãy thử chỉnh sửa và chạy mã nguồn của cuốn sách này trên máy tính của bạn.
- Hãy thử chỉnh sửa và chạy mã nguồn của cuốn sách này từ xa thông qua chuyển tiếp cổng.
- Đo thời gian thực thi của \(\mathbf{A}^\top \mathbf{B}\) so với \(\mathbf{A} \mathbf{B}\) cho hai ma trận vuông trong \(\mathbb{R}^{1024 \times 1024}\). Cách nào nhanh hơn?
19.1.5. Thảo luận¶
- Tiếng Anh: Main Forum
- Tiếng Việt: Diễn đàn Machine Learning Cơ Bản
19.1.6. Những người thực hiện¶
Bản dịch trong trang này được thực hiện bởi:
- Đoàn Võ Duy Thanh
- Phạm Hồng Vinh
- Nguyễn Văn Cường
- Nguyễn Văn Quang