Học sâu trên Spark đang trở nên thú vị

Năm 2012 sẽ được ghi nhớ trong lịch sử như một năm bùng nổ của phân tích dữ liệu. Sự phát triển nổi bật của học tập sâu phần lớn có thể là do sự ra đời của mạng thần kinh tích chập (CNN) vào năm 2012 để phân loại hình ảnh bằng cách sử dụng bộ dữ liệu ImageNet trong Thử thách nhận dạng hình ảnh quy mô lớn (LSVRC) [1]. Đó là một sự kiện lịch sử sau một thời gian ấp ủ rất dài cho lĩnh vực học sâu, bắt đầu từ công trình lý thuyết toán học trong những năm 1940, 50 và 60. Lịch sử trước đây của mạng lưới thần kinh và sự phát triển của deep learning là một điều thú vị và không nên quên, nhưng không quá lời khi nói rằng năm 2012 là năm đột phá của deep learning.

Thật trùng hợp, năm 2012 cũng là một năm đột phá của điện toán phân tán trong bộ nhớ. Một nhóm các nhà nghiên cứu từ Đại học AMPlab đã xuất bản một bài báo có tiêu đề khác thường làm thay đổi thế giới phân tích dữ liệu. “Các bộ dữ liệu phân tán có khả năng phục hồi: Một sự trừu tượng hóa có khả năng chịu lỗi cho tính toán cụm trong bộ nhớ”. [2] Bài viết này mô tả cách những người sáng tạo ban đầu phát triển tính năng trừu tượng hóa dữ liệu trong bộ nhớ hiệu quả, có mục đích chung và có khả năng chịu lỗi để chia sẻ dữ liệu trong các ứng dụng cụm. Nỗ lực này được thúc đẩy bởi những hạn chế của cả MapReduce và các mô hình lập trình bộ nhớ phân tán khác để xử lý các thuật toán lặp và công việc khai thác dữ liệu tương tác.

Sự phát triển không ngừng của rất nhiều thư viện ứng dụng tận dụng tính trừu tượng RDD của Spark bao gồm GraphX ​​để tạo đồ thị và tính toán song song đồ thị, Spark Streaming cho các ứng dụng phát trực tuyến có khả năng chịu lỗi có thể mở rộng và MLlib để học máy có thể mở rộng là bằng chứng cho thấy Spark đã đạt được mục tiêu ban đầu một môi trường lập trình có mục đích chung. Phần còn lại của bài viết này sẽ mô tả quá trình phát triển và tích hợp các thư viện deep learning – một lớp thuật toán lặp cực kỳ hữu ích mà Spark được thiết kế để giải quyết. Tầm quan trọng của vai trò của deep learning đối với phân tích dữ liệu và trí tuệ nhân tạo mới bắt đầu xuất hiện cùng thời điểm Spark được tạo ra nên sự kết hợp của hai sự phát triển này rất thú vị để theo dõi.

MLlib – Thư viện máy học ban đầu cho Spark

Quá trình phát triển MLlib bắt đầu không lâu sau khi mã AMPlab được chuyển đến Quỹ phần mềm Apache vào năm 2013. Nó không thực sự là một thư viện deep learning tuy nhiên có một tùy chọn để phát triển các bộ phân loại perceptron nhiều lớp [3] dựa trên mạng nơ ron nhân tạo tiếp liệu có triển khai lan truyền ngược để học mô hình. Các mạng thần kinh được kết nối đầy đủ đã nhanh chóng bị loại bỏ sau khi phát triển các mô hình phức tạp hơn được xây dựng bằng cách sử dụng các mạng chập, đệ quy và hồi quy. 

Các mạng nông và sâu được kết nối đầy đủ đang quay trở lại như những lựa chọn thay thế cho các mô hình dựa trên cây cho cả hồi quy và phân loại. Hiện tại cũng có rất nhiều mối quan tâm đến các dạng bộ mã hóa tự động khác nhau được sử dụng để tìm hiểu các biểu diễn nén tiềm ẩn (ẩn) về việc giảm kích thước dữ liệu và phân loại tự giám sát. Do đó, MLlib có thể được mô tả tốt nhất như một thư viện máy học với một số khả năng mạng thần kinh hạn chế.

BigDL – Intel mở nguồn thư viện deep learning đầy đủ tính năng cho Spark

BigDL là thư viện deep learning phân tán dành cho Apache Spark. BigDL triển khai đào tạo song song, phân tán dữ liệu trực tiếp trên mô hình điện toán chức năng bằng cách sử dụng các tính năng Spark cốt lõi của các hoạt động sao chép khi ghi và chi tiết thô. Khung này đã được tham chiếu trong các ứng dụng đa dạng như phân loại hình ảnh dựa trên học chuyển, phát hiện đối tượng và trích xuất tính năng, dự đoán theo trình tự để phát sóng lượng mưa, lọc cộng tác thần kinh cho các đề xuất, v.v. Những người đóng góp và người dùng bao gồm nhiều ngành công nghiệp bao gồm Mastercard, Ngân hàng Thế giới, Cray, Talroo, Đại học California San Francisco (UCSF), JD, UnionPay, Telefonica, GigaSpaces. [4]

Các kỹ sư của Dell EMC và Intel gần đây đã hoàn thành một sách trắng trình bày việc sử dụng các công cụ phát triển deep learning từ Intel Analytics Zoo [5] để xây dựng một quy trình tích hợp trên Apache Spark kết thúc bằng mô hình mạng lưới thần kinh sâu để dự đoán các bệnh từ chụp X-quang ngực . [6] Các công cụ và ví dụ trong Analytics Zoo cung cấp cho các nhà khoa học dữ liệu khả năng đào tạo và triển khai các mô hình BigDL, TensorFlow và Keras trên các cụm Apache Spark. Các nhà phát triển ứng dụng cũng có thể sử dụng tài nguyên từ Analytics Zoo để triển khai các ứng dụng thông minh ở lớp sản xuất thông qua việc trích xuất mô hình có khả năng được cung cấp bằng bất kỳ ngôn ngữ Java, Scala hoặc máy ảo Java (JVM) nào khác. 

Các nhà nghiên cứu kết luận rằng các ứng dụng học sâu hiện đại có thể được phát triển và triển khai trên quy mô lớn trên cụm Hadoop và Spark hiện có. Cách tiếp cận này tránh nhu cầu di chuyển dữ liệu sang một cụm học sâu khác và loại bỏ sự phức tạp trong hoạt động của việc cung cấp và duy trì một môi trường điện toán phân tán khác. Phần mềm nguồn mở được mô tả trong sách trắng có sẵn trên Github. [7]

H20.ai – Nước có ga cho Spark

H2O là công nghệ học máy mã nguồn mở và học sâu nhanh, có thể mở rộng và có khả năng mở rộng dành cho các ứng dụng thông minh hơn. Giống như MLlib, thuật toán H20 bao gồm nhiều kỹ thuật học máy hữu ích nhưng chỉ các MLP được kết nối đầy đủ cho học sâu. Với H2O, các doanh nghiệp như PayPal, Nielsen Catalina, Cisco và các doanh nghiệp khác có thể sử dụng tất cả dữ liệu của họ mà không cần lấy mẫu để nhận được dự đoán chính xác nhanh hơn. [8] Dell EMC, Intel và H2o.ai gần đây đã phát triển một kiến ​​trúc tham chiếu chung phác thảo cả những cân nhắc kỹ thuật và hướng dẫn định cỡ cho nền tảng AI doanh nghiệp tại chỗ. [9]

Các kỹ sư cho thấy cách chạy phần mềm H2O.ai trên cơ sở hạ tầng Dell EMC được tối ưu hóa với bộ xử lý Intel® Xeon® có thể mở rộng và bộ lưu trữ NVMe mới nhất, cho phép các tổ chức sử dụng AI để cải thiện trải nghiệm của khách hàng, hợp lý hóa quy trình kinh doanh cũng như giảm lãng phí và gian lận. Phần mềm được xác thực bao gồm nền tảng doanh nghiệp AI không người lái H2O và nền tảng phần mềm nguồn mở H2O và H2O Sparkling Water. Sparkling Water được thiết kế để hoạt động như một ứng dụng Spark thông thường. Nó cung cấp cách khởi tạo dịch vụ H2O trên Spark và truy cập dữ liệu được lưu trữ trong cả cấu trúc dữ liệu Spark và H2O. Các thuật toán Nước lấp lánh H20 được thiết kế để tận dụng khả năng tính toán phân tán trong bộ nhớ của các cụm Spark hiện có. Kết quả từ H2O có thể dễ dàng được triển khai bằng cách sử dụng đường ống có độ trễ thấp H2O hoặc trong Spark để ghi điểm.

Hiệu suất của cụm Nước lấp lánh H2O được đánh giá trên các cụm ba và năm nút. Ở chế độ này, H2O khởi chạy thông qua nhân viên Spark và Spark quản lý việc lập lịch công việc và liên lạc giữa các nút. Ba và năm Máy chủ Dell EMC PowerEdge R740xd với bộ xử lý Intel Xeon Gold 6248 đã được sử dụng để đào tạo các mô hình XGBoost và GBM bằng cách sử dụng tập dữ liệu thế chấp lấy từ tập dữ liệu Hiệu suất cho vay một gia đình của Fannie Mae.

Spark và GPU

Nhiều nhà khoa học dữ liệu quen thuộc với Spark dành cho máy học đang chờ đợi sự hỗ trợ chính thức cho GPU. Những lợi thế nhận được từ các mô hình mạng thần kinh hiện đại như mục nhập CNN trong LSVRC 2012 sẽ không thể được hiện thực hóa đầy đủ nếu không có sự nỗ lực của NVIDIA và các hãng khác trên phần cứng tăng tốc mới. Công nghệ GPU của NVIDIA như Volta V100 đã trở thành một loại bộ tăng tốc ML/DL cấp doanh nghiệp tiên tiến giúp giảm thời gian đào tạo cho tất cả các loại cấu hình mạng thần kinh bao gồm CCN, RNN (mạng thần kinh tái phát) và GAN ​​(mạng đối thủ tổng hợp) để chỉ đề cập đến một số hình thức phổ biến nhất. Các nhà nghiên cứu học sâu nhận thấy nhiều lợi ích khi xây dựng các “đường ống” đào tạo mô hình đầu cuối dữ liệu, tận dụng khả năng tính toán phân tán tổng quát của Spark cho mọi thứ, từ làm sạch và định hình dữ liệu cho đến đào tạo mở rộng quy mô bằng cách sử dụng tích hợp với GPU.

NVIDIA gần đây đã thông báo rằng họ đang làm việc với cộng đồng nguồn mở của Apache Spark để mang lại khả năng tăng tốc GPU gốc cho phiên bản tiếp theo của khung xử lý dữ liệu lớn, Spark 3.0 [10] Cộng đồng Apache Spark đang phân phối bản phát hành xem trước của Spark 3.0 để khuyến khích rộng rãi -scale thử nghiệm cộng đồng của phiên bản sắp tới. Bản xem trước không phải là bản phát hành ổn định về chức năng hoặc đặc tả API dự kiến. Không có ngày chắc chắn nào về tính khả dụng chung của Spark 3.0 nhưng các tổ chức đang khám phá các tùy chọn cho deep learning phân tán với GPU nên bắt đầu đánh giá các tính năng và lợi thế được đề xuất của Spark 3.0.

Cloudera cũng mang đến cho các nhà phát triển và khoa học dữ liệu cơ hội thực hiện thử nghiệm và đánh giá với bản phát hành xem trước của Spark 3.0. Phiên bản GA hiện tại của Cloudera Runtime bao gồm bản xem trước 2 của Apache Spark 3.0 như một phần của bản phát hành CDS 3 (Thử nghiệm) do Apache Spark cung cấp. [11] Tài liệu đầy đủ về Spark 3.0 xem trước 2 bao gồm nhiều mẫu mã có sẵn trên trang web Apache Spark [12] 

Cái gì tiếp theo

Đã 8 năm kể từ khi các sự kiện đột phá về học sâu và điện toán phân tán với Spark được công bố. Chúng tôi đã chứng kiến ​​​​sự áp dụng rộng rãi của cả học sâu và Spark cho tất cả các loại trường hợp sử dụng phân tích từ hình ảnh y tế đến xử lý ngôn ngữ đến kiểm soát sản xuất và hơn thế nữa. Bây giờ chúng ta vừa mới sẵn sàng chứng kiến ​​những bước đột phá mới trong việc hợp nhất Spark và deep learning, đặc biệt là với việc bổ sung hỗ trợ cho các bộ tăng tốc phần cứng. Các chuyên gia CNTT và nhà khoa học dữ liệu vẫn còn phải chịu gánh nặng quá lớn với chi phí nợ kỹ thuật tiềm ẩn để quản lý hệ thống máy học. [13] Việc tích hợp học sâu tăng tốc với sức mạnh của nền tảng điện toán phân tán tổng quát Spark sẽ mang lại cho cả cộng đồng CNTT và khoa học dữ liệu một môi trường có khả năng và dễ quản lý để phát triển và lưu trữ các quy trình phân tích dữ liệu từ đầu đến cuối trong một khuôn khổ chung.  

Người giới thiệu
[1] Alom, MZ, Taha, TM, Yakopcic, C., Westberg, S., Sidike, P., Nasrin, MS, … & Asari, VK (2018). Lịch sử bắt đầu từ Alexnet: Một cuộc khảo sát toàn diện về các phương pháp học sâu. bản in trước arXiv arXiv:1803.01164.
[2] Zaharia, M., Chowdhury, M., Das, T., Dave, A., Ma, J., McCauly, M., … & Stoica, I. (2012). Bộ dữ liệu phân tán có khả năng phục hồi: Một cách trừu tượng có khả năng chịu lỗi cho điện toán cụm trong bộ nhớ. Trong Được trình bày như một phần của Hội nghị chuyên đề {USENIX} lần thứ 9 về Thiết kế và triển khai hệ thống nối mạng ({NSDI} 12) (trang 15-28).
[3] Apache Spark (Tháng 6 năm 2020) Trình phân loại perceptron nhiều lớp https://spark.apache.org/docs/latest/ml-classification-regression.html#multilayer-perceptron-classifier
[4] Dai, JJ, Wang, Y., Qiu, X., Ding, D., Zhang, Y., Wang, Y., … & Wang, J. (2019, tháng 11). Bigdl: Khung học sâu phân tán cho dữ liệu lớn. Trong Kỷ yếu của Hội nghị chuyên đề ACM về Điện toán đám mây (trang 50-60).
[5] Sở thú Intel Analytics (Tháng 6 năm 2020) https://software.intel.com/content/www/us/en/develop/topics/ai/analytics-zoo.html
[6] Chandrasekaran, Bala (Dell EMC) Yang, Yuhao (Intel) Govindan, Sajan (Intel) Abd, Mehmood (Dell EMC) AARUD (2019). Học sâu trên Apache Spark và Analytics Zoo.
[7] Dell AI Engineering (Tháng 6 năm 2020) Ví dụ về xử lý hình ảnh BigDL https://github.com/dell-ai-engineering/BigDL-ImageProcessing-Examples
[8] Candel, A., Parmar, V., LeDell, E. và Arora, A. (Tháng 4 năm 2020). Học sâu với H2O https://www.h2o.ai/wp-content/themes/h2o2016/images/resources/DeepLearningBooklet.pdf
[9] Kiến trúc tham khảo cho H2O.ai (Tháng 2 năm 2020) https://www.dellemc.com/resources/en-us/asset/white-papers/products/ready-solutions/dell-h20-architectures-pdf.pdf Công nghệ Dell
[10] Woodie, Alex (Tháng 5 năm 2020) Spark 3.0 để nhận được khả năng tăng tốc GPU gốc https://www.datanami.com/2020/05/14/spark-3-0-to-get-native-gpu-acceleration/ datanami
[11] CDS 3 (Thử nghiệm) Được cung cấp bởi Tổng quan về Apache Spark (Tháng 6 năm 2020) https://docs.cloudera.com/runtime/7.0.3/cds-3/topics/spark-spark-3-overview.html
[12] Tổng quan về Spark (tháng 6 năm 2020) https://spark.apache.org/docs/3.0.0-preview2/
[13] Sculley, D., Holt, G., Golovin, D., Davydov, E., Phillips, T., Ebner, D., … & Dennison, D. (2015). Nợ kỹ thuật ẩn trong hệ thống máy học. Trong Những tiến bộ trong hệ thống xử lý thông tin thần kinh (trang 2503-2511).