Khóa học
Mặc dù khóa học Introduction to Deep Learning in Python trên DataCamp cung cấp cho bạn mọi thứ cần để thực hiện deep learning trên laptop hoặc máy tính cá nhân, sớm muộn bạn cũng sẽ muốn chạy các mô hình deep learning trên GPU (Graphics Processing Unit).
Bài viết này sẽ giúp bạn thực hiện những bước tiếp theo!
Đa số người dùng không có GPU trên máy của riêng mình, vì vậy bài viết sẽ hướng dẫn bạn cách chạy GPU từ đám mây Amazon Web Services (AWS).
Chạy mô hình trên GPU như mô tả có chi phí khoảng $0,90 mỗi giờ. Vì thế, nếu laptop hoặc máy tính cá nhân của bạn có GPU, bạn có thể thiết lập để sử dụng GPU đó và tiết kiệm chi phí.
Có khá nhiều bước để thiết lập môi trường điện toán đám mây lần đầu. Nhưng khi đã thiết lập xong, bạn sẽ thấy việc tiếp tục sử dụng về sau rất dễ dàng.
Tạo tài khoản Amazon Web Services
Truy cập https://aws.amazon.com/ để đăng ký tài khoản AWS. Làm theo liên kết Create an AWS Account.
Chọn nút I am a new user và nhập email của bạn. Bạn sẽ được hướng dẫn điền một số biểu mẫu với thông tin như tên, địa chỉ email và mật khẩu.

Thiết lập máy chủ điện toán đám mây
Quy trình thiết lập máy chủ có khá nhiều bước. May mắn là chúng tôi sẽ hướng dẫn bạn cách dừng phiên bản (instance), để bạn không phải trả phí khi không sử dụng, và có thể khởi động lại nhanh chóng sau khi đã thiết lập.
Bây giờ bạn đã có tài khoản, bạn có thể dùng bất cứ lúc nào bằng cách quay lại https://aws.amazon.com/ và nhấp Sign In To Console.

Amazon cung cấp vô số dịch vụ điện toán đám mây, điều này có thể khiến người mới choáng ngợp. Bạn sẽ tập trung vào dịch vụ EC2 (viết tắt của Elastic Cloud Compute). Góc trên bên trái cửa sổ trình duyệt có menu dịch vụ.

Mở menu này và chọn EC2, thường là tùy chọn đầu tiên. Bạn sẽ đến trang hiển thị trạng thái tất cả các instance EC2 bạn đang chạy. Chọn nút ở giữa trang để Launch Instance.

Mỗi instance đi kèm sẵn các phần mềm khác nhau (trong “machine images”), và bạn cần quyết định muốn có sẵn những gì. Ở đây, chúng ta sẽ dùng một image từ AWS Marketplace được tối ưu cho deep learning.
Chọn AWS Marketplace ở thanh menu bên trái.
Sau đó nhập deep learning ubuntu vào ô tìm kiếm:

Danh sách sẽ hiển thị một số tùy chọn, bao gồm Deep Learning AMI Ubuntu Version chính thức của Amazon. Chọn mục này.

Bây giờ bạn sẽ thấy menu các loại instance. Mỗi loại có mức giá và năng lực tính toán khác nhau.
Các instance có GPU là những loại bắt đầu bằng g2 hoặc p2. Chúng tôi khuyến nghị p2.xlarge, có giá chưa đến một đô mỗi giờ. Nếu muốn rẻ hơn, g2.2xlarge khoảng $0,65/giờ, dù không nhanh hoặc mạnh bằng.
Sau khi chọn loại instance, chọn Configure Instance Details ở cuối trang. Sau đó chọn 6. Configure Security Group trên menu gần đầu trang.
Tại đây, chúng ta sẽ thiết lập instance để dễ truy cập từ máy của bạn.
Mỗi hàng mô tả quy tắc truy cập vào instance của bạn.
Chúng ta sẽ dùng Jupyter notebooks, được phục vụ trên cổng 8888. Nếu bạn chưa hiểu, bạn sẽ thấy cách thiết lập ngay sau đây.
Hiện tại, nhấp nút Add Rule. Ở cột mới chọn TCP làm giao thức, 8888 làm Port, và 0.0.0.0/0 cho cột cuối cùng, là nguồn (source).

Cuối cùng, nhấp nút Review and Launch ở cuối màn hình. Sau đó nhấn Launch lần nữa.
Bây giờ đến bước bảo mật cuối cùng… là chọn cặp khóa (key pair). Khóa là một tệp trên máy bạn, phải khớp với tệp lưu trên máy chủ. Đây là cách bạn ngăn người khác dùng máy chủ vừa thiết lập. Vì vậy, đừng chia sẻ khóa hoặc đăng tệp ở nơi công cộng.
Chọn Create a new key pair và nhập tên khóa. Sau đó nhấn Download Key Pair để tải bản sao khóa, bạn sẽ cần để truy cập máy chủ.

Sớm thôi bạn sẽ được chuyển đến màn hình trông như thế này:

Dãy ký tự dài màu xanh là tên instance của bạn. Bạn có thể chọn nó để xem bảng điều khiển EC2, nơi hiển thị máy chủ này đang chạy.
Chúc mừng! Bạn đã có một máy chủ deep learning chạy trên đám mây.
Kết nối tới máy chủ
Bây giờ chúng ta sẽ kết nối tới máy chủ bằng giao thức ssh. Từ đó, chúng ta sẽ khởi động máy chủ Jupyter notebook để sử dụng qua trình duyệt.
Trên máy mac hoặc linux, bạn có thể dùng lệnh ssh. Trên Windows, nhiều người dùng ứng dụng PuTTY cho kết nối ssh.
Bạn có thể cần thay đổi quyền truy cập cho tệp khóa của mình. Trên MacOS và Linux có thể thực hiện bằng lệnh
chmod 400 my_private_key.pemSau đó, vẫn ở dòng lệnh, chỉ định rằng bạn muốn dùng khóa này để xác thực khi đăng nhập vào máy chủ bằng
ssh-add my_private_key.pemĐể đăng nhập vào máy chủ, chúng ta cần địa chỉ IP của máy. Bạn có thể tìm trên bảng điều khiển EC2 trong trình duyệt.

Đăng nhập tại dòng lệnh với lệnh
ssh ubuntu@34.208.222.118Bạn sẽ muốn thay 34.208.222.118 bằng địa chỉ IP của máy chủ bạn.
Sau khi đăng nhập vào máy chủ, dùng lệnh ipython để khởi động shell IPython. Trong IPython, thử import keras để kiểm tra mọi thứ hoạt động. Bạn sẽ thấy một số thông báo cho biết CUDA đang được dùng… nghĩa là keras đang truy cập GPU.

Nếu bạn quen với Linux, IPython và một trình soạn thảo văn bản trên Linux, bạn có thể làm việc từ đây. Một số người chọn dùng hai cửa sổ: một cửa sổ ssh vào máy chủ để dùng IPython, và một cửa sổ ssh khác để dùng trình soạn thảo.
Thiết lập Jupyter Notebook
Tuy nhiên, hầu hết mọi người sẽ thấy dễ hơn khi thiết lập Jupyter notebooks và lập trình qua trình duyệt. Để làm vậy, chúng ta sẽ đặt một mật khẩu mới.
Bước đầu tiên là lấy hash của mật khẩu bạn muốn dùng. Bạn thực hiện trong IPython như sau:

Sao chép hash được xuất ra sau khi bạn đặt mật khẩu. Bạn sẽ cần lại ngay sau đây.
Gõ exit để thoát IPython.
Bây giờ chúng ta cần báo cho Jupyter sử dụng mật khẩu bạn chọn. Để làm vậy, chạy các lệnh sau
jupyter notebook --generate-configmkdir certscd certssudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pemSau đó dùng trình soạn thảo văn bản để chỉnh ~/.jupyter/jupyter_notebook_config.py. Tôi thích vim và sẽ dùng lệnh:
vim ~/.jupyter/jupyter_notebook_config.pyỞ đầu tệp đó, dán nội dung sau:
c = get_config()c.IPKernelApp.pylab = 'inline' c.NotebookApp.certfile = u'/home/ubuntu/certs/mycert.pem' c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False # Your password below will be whatever you copied earlier c.NotebookApp.password = u'sha1:941c93244463:0a28b4a9a472da0dc28e79351660964ab81605ae' c.NotebookApp.port = 8888Bạn có thể sao chép nguyên như vậy và chỉ thay mật khẩu. Nhớ rằng, đừng dùng mật khẩu thật của bạn. Hãy dán hash của mật khẩu mà bạn đã tạo trước đó.
Kết nối tới Jupyter trong trình duyệt
Mở trình duyệt bạn muốn và nhập địa chỉ của instance (có trong bảng điều khiển EC2) kèm theo :8888.

Tại thời điểm này bạn có thể thấy thông báo bảo mật. Bạn không cần lo lắng về điều này. Trên Chrome, bạn có thể nhấp nút “advanced” trong cửa sổ trình duyệt chính để bỏ qua cảnh báo bảo mật.

Bây giờ bạn sẽ được yêu cầu nhập mật khẩu.

Nhập mật khẩu của bạn. Đây không phải là hash của mật khẩu, mà là mật khẩu thô bạn đã gõ trong IPython để lấy giá trị hash.
Chúc mừng, bạn đã đăng nhập!
Sử dụng Notebook
Trong trình duyệt, chọn mục trên menu để tạo một notebook Python mới.

Ôi… Không hề đơn giản. Nhưng về sau sẽ dễ thôi
Để có được khả năng dùng notebook, bạn đã phải thiết lập khá nhiều. May mắn là phần lớn chỉ làm một lần. Bây giờ bạn có thể dừng máy chủ trong bảng điều khiển EC2 khi không dùng đến, và bạn sẽ không còn phải trả phí nữa.

Dừng một instance sẽ giữ lại toàn bộ công sức thiết lập của bạn, nhưng instance sẽ ngừng hoạt động cho đến khi bạn khởi động lại. Ở một khía cạnh nào đó, nó giống nút tạm dừng. Nếu chọn terminate thì toàn bộ thông tin về instance đó sẽ bị mất và bạn sẽ phải thiết lập lại lần sau.
Vì bạn chọn stop, bạn có thể quay lại bảng điều khiển ec2 vào ngày khác và nhấp start.

Sau khi nhấp start, việc khởi động lại khá dễ dàng. Instance của bạn sẽ có địa chỉ IP mới. Bạn sẽ cần ssh vào địa chỉ IP mới đó
ssh ubuntu@34.208.26.73Trong cửa sổ bạn đã truy cập máy chủ qua ssh, gõ
jupyter notebookSau đó bạn có thể quay lại trình duyệt và bắt đầu làm việc ngay.
Thiết lập ban đầu khá mất công, nhưng hy vọng bạn sẽ tận dụng được rất nhiều khi tiếp tục luyện tập và thực hiện thêm các dự án deep learning thú vị.
Nếu bạn quan tâm học thêm, hãy xem các khóa học của DataCamp sau: