Đánh giá lựa chọn các Deep Learning Frameworks tốt và phổ biến nhất

Việc chọn một software stack cho Deep Learning một cách chính xác ngay từ đầu là điều rất quan trọng cho sự thành công lâu dài của các dự án phần mềm của bạn và Deep Learning cũng không ngoại lệ. Có rất nhiều framework hiện có và việc chọn đúng framework phụ thuộc vào phần còn lại của stack và mức độ kiểm soát bạn mong muốn đối với những gì xảy ra bên dưới.

Các Deep Learning framework phổ biến nhất hiện nay là: Caffe, Tensorflow, Theano và Torch. Để thuận tiện, tất cả các hệ thống GPU chuyên dùng cho học sâu / Deep Learning của Thế Giới Máy Chủ đều được hỗ trợ cài đặt sẵn các framework hoặc bộ phần mềm Deep Learning nếu khách hàng có yêu cầu.

Nhấp vào đây để tìm hiểu thêm về Giải pháp máy chủ GPU chuyên dùng cho Deep Learning.

Nhưng trước tiên, một Deep Learning Framework là gì?

Các thành phần chính của một Deep Learning Framework là:

  • Các Tensor object & operation.
  • Đồ thị tính toán và các công cụ vi phân.
  • Các extension cho BLAS/cuDNN.

Một Tensor là một khái quát của một ma trận: ví dụ, khi nói về một bức ảnh. Biểu diễn bên trong của hình ảnh bao gồm tọa độ ngang và dọc cho các pixel và mỗi pixel được biểu thị bằng một vectơ màu, tương ứng với phân rã RGB (đỏ, lục và lam). Vì vậy, chúng tôi hy vọng rằng một Deep Learning Framework sẽ cho phép chúng ta tương tác với các nguồn dữ liệu khác nhau (văn bản, video, âm thanh) và chuyển đổi chúng thành các Tensor, và ngược lại để chuyển đổi các Tensor thành một thứ có thể đọc được.

Vì vậy, có các Tensor là hữu ích vì chúng ta có thể chạy quy trình làm việc của các mạng thần kinh thông thường như được đề cập dưới đây: thực hiện phép nhân từng đầu vào với ma trận trọng số và sau đó chuyển qua chức năng kích hoạt liên tiếp qua nhiều lớp. Tất cả các Deep Learning Framework đều có quy trình làm việc cơ bản này.

Deep Learning Framework: lớp sigmoid được biểu diễn dưới dạng các phép toán ma trận
 

Phần huyền bí nhất của hoạt động bên trong của một framework là biểu đồ tính toán. Biểu đồ tính toán đảm nhiệm thứ tự logic trong đó các hoạt động nên được thực hiện và song song bất cứ khi nào có thể. Một đồ thị tính toán đơn giản được hiển thị dưới đây. Chắc chắn, nó trông có vẻ hơi quá cho vấn đề được mô tả ở đó, nhưng vấn đề là đồ thị tính toán giúp phân bổ và điều phối các tài nguyên. Điều này là rất quan trọng cho các tính toán học tập chuyên sâu về dữ liệu.

khuôn khổ Deep Learning - kết nối các hoạt động khác nhau
Các công cụ vi phân rất quan trọng bởi vì, như bạn đã biết, lan truyền ngược về cơ bản là quy tắc chuỗi được áp dụng lặp đi lặp lại, vì vậy chúng ta cần có khả năng tính toán độ dốc một cách đáng tin cậy. Sẽ là quá nhiều để yêu cầu người dùng thực hiện những điều đó mọi lúc, vì vậy tất cả các Deep Learning Framework đều có những công cụ này.

Cuối cùng, để việc thực hiện được tối ưu, nó cần phải gần với ngôn ngữ máy. Việc triển khai các thuật toán phức tạp trong các ngôn ngữ cấp thấp như C ++ rất dễ bị lỗi, do đó, việc liên kết từ các ngôn ngữ cấp cao hơn như Python hoặc LUA sang các ngôn ngữ cấp thấp hơn có thể nói chuyện với GPU một cách hiệu quả là rất quan trọng.

Chúng ta hãy đi qua một số framework phổ biến nhất:

Caffe

Các bàn luận để nói về việc liệu Theano hay Caffe là framework lâu đời nhất vẫn xuất hiện trên cộng đồng. Mặc dù chúng chỉ là về thị giác máy tính / điện toán thị giác, nhưng nó hoạt động rất tốt. Nó dựa trên C ++ và đó là nền tảng của dự án DeepDream mà Google đã phát hành trước đây, để cho thấy network của họ đã xem hình ảnh như thế nào. Nó đã được chuyển đến Spark bởi Yahoo. Được phát triển bởi Berkeley Vision Lab.

Ưu điểm:   Rất linh hoạt và biểu diễn. Hỗ trợ RNN hàng đầu.

Nhược điểm:  Việc cài đặt thực sự khó khăn, có rất nhiều phụ thuộc phải xử lý.

Các trường hợp sử dụng:  Dẫn đầu trong các hệ thống thị giác máy tính ở môi trường production. Thực hiện mẫu với Keras, triển khai với Caffe.

Tìm hiểu thêm về Deep Learning Framework Caffe tại đây.

TensorFlow

Được xây dựng bên trên Theano, Tensorflow nhằm mục đích cung cấp sự tương tác ở mức cao hơn. Tuy nhiên, nó vẫn còn quá thấp và nhiều chuyên gia Deep Learning nổi tiếng sử dụng các thư viện cấp cao hơn, chẳng hạn như tf.contrib hoặc Keras. Tuy nhiên, vì được hỗ trợ bởi Google, nó đã tìm được động lực người dùng lớn trong thời gian gần đây. Chắc chắn nó là một cái đặt cược an toàn.

Ưu điểm:  Cộng đồng lớn, được Google hỗ trợ. Bạn có thể đăng nhập các sự kiện tương tác với TensorBoard và xem mạng hoạt động như thế nào (tỷ lệ học tập, giá trị mất, độ chính xác).

Nhược điểm:  Vẫn còn quá thấp cho nhiều nhiệm vụ thông thường.

Các trường hợp sử dụng:  Đối với người dùng trung gian, khi bạn cần một sự thỏa hiệp giữa tính linh hoạt và một cộng đồng lớn để quay trở lại.

Tìm hiểu thêm về Deep Learning Framework TensorFlow tại đây.

Theano

Theano là trái tim của các framework cấp cao hơn (ví dụ, Tensorflow). Mục đích của Theano là trở thành thư viện toán học tượng trưng, ​​và như vậy, bạn cần phải khá quen thuộc với các thuật toán thường được ẩn đi. Nó được phát triển bởi Frédéric Bastien, từ phòng thí nghiệm MILA của Đại học Montreal.

Ưu điểm:   Rất linh hoạt và biểu diễn. Hỗ trợ RNN hàng đầu.

Nhược điểm:  API cấp thấp. Bạn cần phải là một chuyên gia về toán học cung cấp năng lực cho các thuật toán để tận dụng tối đa nó.

Các trường hợp sử dụng:  Chuyên gia học máy / Machine Learning, các thuật toán phức tạp.

Tìm hiểu thêm về Deep Learning Framework Theano tại đây.

Torch

Torch, được phát triển bởi Nhóm nghiên cứu trí tuệ nhân tạo Facebook (FAIR), đã xuất hiện từ năm 2002. Có rất nhiều tiện ích mở rộng có sẵn và một cộng đồng đang phát triển. Tuy nhiên, nó được phát triển trên Lua, đây không phải là ngôn ngữ phổ biến nhất.

Ưu điểm:   Được sử dụng bởi Facebook, IBM, Yandex, ngoài một số nơi khác

Nhược điểm:  Ngoài tài liệu chính thức thì thông tin tham khảo rất hạn chế.

Các trường hợp sử dụng:  Nếu bạn hoàn toàn thích / phải lập trình trong Lua, framework này là dành cho bạn.

Mặc dù vẫn còn nhiều tranh luận để có Deep Learning Framework tốt nhất, lựa chọn của chúng tôi là đi từ trên xuống và thử một framework cấp cao hơn trước (Keras, Tensorflow) và sau đó đi sâu hơn vào các framework cấp thấp hơn cho môi trường production (Theano, Caffe).

Liên hệ tác giả