Ngày càng có nhiều ứng dụng AI. Hầu hết framework hoặc nền tảng phát triển là mã nguồn mở. Làm thế nào để người mới bắt đầu có thể chọn một môi trường phát triển phù hợp với họ?

  • Đối với môi trường phát triển sử dụng Linux làm hệ điều hành, nó có thể được chia thành phần mềm quản lý, nền tảng phát triển (development platforms) và  frameworks theo hệ thống phân cấp.
  • Phần mềm quản lý thường đề cập đến quản lý phần cứng, Python và các hệ thống giám sát và quản lý phiên bản công cụ khác, trong đó phổ biến nhất là Kubernetes, Docker hoặc Anaconda.
  • Nền tảng phát triển là một hệ thống cấp cao hơn. Chức năng chính của nó là cung cấp môi trường để người dùng viết chương trình dễ dàng. Thông thường, nó bao gồm Jupyter Notebook, JupyterLab, PyCharm hoặc Visual Studio Code.
  • Framework là một bộ công cụ phát triển triển khai học máy hoặc học sâu ở cấp độ cao hơn. Có rất nhiều loại framework, và có những nền tảng phù hợp theo thói quen cá nhân hoặc loại ứng dụng, chẳng hạn như TensorFlow, PyTorch hoặc Caffe, sẽ được giới thiệu dưới đây tùy theo môi trường người dùng khác nhau.

Có rất nhiều phần mềm quản lý, nền tảng phát triển hoặc framework, vì vậy chúng tôi sẽ không giới thiệu tất cả từng cái một trong bài viết này. Chúng tôi sẽ chỉ tập trung vào môi trường AI phù hợp nhất cho các loại người dùng khác nhau.

Nhà phát triển cá nhân - Individual Developer

Môi trường nhà phát triển cá nhân chủ yếu cài đặt hệ thống ở đầu cục bộ. Người ta thường thiết lập Anaconda trong hệ thống để chuyển đổi giữa và quản lý các dự án. Anaconda cài đặt khung học sâu thông qua cài đặt pip.

Ưu điểm:

  • Có thể chuyển đổi giữa các phiên bản Python hoặc framework khác nhau

Nhược điểm:

  • Yêu cầu dung lượng ổ cứng lớn
  • Một số Preinstallation Kit được cài đặt sẵn có thể hoàn toàn không được sử dụng
  • Khi các phiên bản của CUDA Toolkit có thể được sử dụng cho nhiều phiên bản của framework khác nhau, nhà phát triển phải chuyển đến môi trường ảo của từng phiên bản framework để định cấu hình cài đặt môi trường CUDA Toolkit.

Những nhược điểm trên rất dễ gặp phải bởi các nhà phát triển cá nhân. Ví dụ: dự án trước có thể sử dụng TensorFlow 1.12 và CUDA Toolkit phiên bản 10.0, nhưng dự án mới sử dụng TensorFlow 1.15. Tại thời điểm này, bạn phải nâng cấp phiên bản CUDA Toolkit lên 10.2. Khi cả dự án cũ và dự án mới có thể được thực hiện cùng một lúc, phiên bản CUDA Toolkit được sử dụng bởi cả hai phải được đặt riêng biệt trong hai môi trường ảo.

Do đó, theo Leadtek AI Expert, họ khuyên nên sử dụng Docker làm phần mềm quản lý. Docker bao gồm những lợi thế của Anaconda và nó giúp tiết kiệm những phức tạp khi thiết lập môi trường.

Ưu điểm:

  • Các môi trường phát triển khác nhau bao gồm một hệ điều hành nhẹ, như máy ảo; mỗi người có một môi trường phát triển độc lập
  • Có các phiên bản nguồn mở chính thức của các framework chính thống có thể được tải xuống trực tiếp từ Docker Hub, loại bỏ các quy trình cài đặt phức tạp
  • NVIDIA cung cấp công cụ plugin nvidia-docker và các dịch vụ Docker có thể bao gồm tài nguyên GPU.
  • Có thể kết hợp với các nền tảng phát triển chung như Jupyter Notebook hoặc Visual Studio Code.

Có bất kỳ nhược điểm hoặc biện pháp phòng ngừa nào khi sử dụng Docker không?

Môi trường Docker chứa hệ điều hành (nhẹ), nền tảng phát triển và Framework nói trên. Môi trường thường chiếm 4-7GB dung lượng. Nếu tiếp tục cài đặt gói, nhiều dung lượng ổ cứng sẽ bị tiêu tốn. Đây là điều quan trọng cần lưu ý trong việc thiết lập bất kỳ môi trường ảo nào.

Đối với lựa chọn Jupyter Notebook hoặc Visual Studio Code cho lớp trên, cả hai đều có người dùng riêng. Ưu điểm của Visual Studio Code là nó kế thừa những ưu điểm của nền tảng Visual Studio và dễ gỡ lỗi, còn Jupyter Notebook có chức năng phát triển và chú thích mạnh mẽ để dễ dàng hướng dẫn. Ngày nay, Visual Studio Code có thể được kết hợp với Jupyter Notebook, đây là một điểm cộng lớn cho các nhà phát triển.

(tham khảo Jupyter Notebook : https://code.visualstudio.com/docs/python/jupyter-support )

Đối với các framework học sâu, mỗi framework đều có những người dùng và chức năng theo thói quen, điều này sẽ không được giới thiệu chi tiết trong bài viết này. Tuy nhiên, các framework mà hầu hết các nhà phát triển hiện đang sử dụng đều là TensorFlow và PyTorch. Trước đây được phát triển và duy trì bởi nhóm Google; nó cũng hỗ trợ nhiều ngôn ngữ và hiện là Framework được sử dụng nhiều nhất. Sau này được phát triển cho nhóm AI của Facebook. Cũng có nhiều người ủng hộ, nên nó đã phát triển nhanh chóng trong hai năm qua và có động lực để bắt kịp với TensorFlow. Bất kể framework nào được sử dụng, Python vẫn là ngôn ngữ lập trình được yêu cầu nhiều nhất để phát triển AI.

Đơn vị nghiên cứu nhỏ

Các đơn vị nghiên cứu nhỏ thường có nhóm phát triển AI từ 2 đến 10 người. Học sâu tiêu tốn một lượng lớn tài nguyên phần cứng trong quá trình xây dựng mô hình, trong đó phần cứng quan trọng nhất là GPU. Tài nguyên GPU rất quan trọng đối với tiến trình làm việc nhóm trôi chảy.

Phần mềm quản lý được đề xuất nhiều nhất cho các nhóm nhỏ cũng là Docker. Ngoài việc phân bổ tài nguyên phần cứng như GPU, CPU và RAM cho các vùng chứa ảo, Docker cũng bao gồm quản lý phiên bản ứng dụng và framwork. Nếu không có phần mềm quản lý phần cứng, tài nguyên hệ thống đa GPU rất khó phân bổ (nếu không chỉ định GPU, hoạt động thường được thực thi bởi GPU có ID 0) hoặc nhóm cần giao tiếp tài nguyên phần cứng đã sử dụng trước, nếu không thì dễ dàng rằng một số GPU sẽ được sử dụng trước hoặc chạy không tải.

Docker có thể giải quyết tình huống này thông qua việc cấp phát tài nguyên phần cứng trước (như hình bên dưới). Khác với Kubernetes thường được sử dụng trong các doanh nghiệp lớn, các máy ảo Docker khác nhau có thể được cấu hình trên cùng một bộ phần cứng GPU, do đó tài nguyên phần cứng có thể được sử dụng hiệu quả hơn.

Đối với sự lựa chọn nền tảng phát triển, nó giống như tình huống của các nhà phát triển cá nhân. Người dùng có thể chọn Visual Studio Code hoặc Jupyter Notebook tùy theo thói quen phát triển cá nhân.

Nếu cân nhắc rằng các chương trình đang phát triển sẽ được đưa vào giảng dạy, Jupyter Notebook có thể được sử dụng làm tài liệu giảng dạy vì nó có thể thực thi mã theo khối và dễ dàng viết chú thích.

Tuy nhiên, nếu nó dựa trên sự phát triển hệ thống dự án, thì chức năng gỡ lỗi của Visual Studio Code phù hợp hơn để phát triển hệ thống.

Bất kể các bạn chọn nền tảng hoặc công cụ nào, điều quan trọng nhất là các nhà phát triển có thể tập trung vào R & D và phát triển các mô hình và hệ thống. Phần cứng hoặc phần mềm quản lý khác có thể được giao cho quản trị viên hệ thống của nhóm. Do đó, Docker là một lựa chọn rất phù hợp. Liên kết cài đặt Docker cũng được đính kèm bên dưới. Hãy nhớ cài đặt Docker Engine trước khi cài đặt gói nvidia-docker.

Hướng dẫn cài đặt Docker Engine:  https://docs.docker.com/install/

Hướng dẫn cài đặt nvidia-docker :  https://github.com/NVIDIA/nvidia-docker