Học máy với Python, Jupyter, KSQL và TensorFlow


Dương Thu Phong
8 tháng trước
Hữu ích 2 Chia sẻ Viết bình luận 0
Đã xem 3436

Building a scalable, reliable, and performant machine learning (ML) infrastructure is not easy. It takes much more effort than just building an analytic model with Python and your favorite machine learning framework.

Uber, which already runs their scalable and framework-independent machine learning platform Michelangelo for many use cases in production, wrote a good summary:

When Michelangelo started, the most urgent and highest impact use cases were some very high scale problems, which led us to build around Apache Spark (for large-scale data processing and model training) and Java (for low latency, high throughput online serving). This structure worked well for production training and deployment of many models but left a lot to be desired in terms of overhead, flexibility, and ease of use, especially during early prototyping and experimentation [where Notebooks and Python shine].

Uber expanded Michelangelo "to serve any kind of Python model from any source to support other Machine Learning and Deep Learning frameworks like PyTorch and TensorFlow [instead of just using Spark for everything]."

So why did Uber (and many other tech companies) build its own platform and framework-independent machine learning infrastructure?

The posts How to Build and Deploy Scalable Machine Learning in Production with Apache Kafka and Using Apache Kafka to Drive Cutting-Edge Machine Learning describe the benefits of leveraging the Apache Kafka ® ecosystem as a central, scalable, and mission-critical nervous system. It allows real-time data ingestion, processing, model deployment, and monitoring in a reliable and scalable way.

Bài đăng này tập trung vào cách hệ sinh thái Kafka có thể giúp giải quyết sự không phù hợp trở kháng giữa các nhà khoa học dữ liệu, kỹ sư dữ liệu và kỹ sư sản xuất. Bằng cách tận dụng nó để xây dựng cơ sở hạ tầng học máy có thể mở rộng của riêng bạn và cũng làm cho các nhà khoa học dữ liệu của bạn hài lòng, bạn có thể giải quyết các vấn đề tương tự mà Uber đã xây dựng nền tảng ML của riêng mình, Michelangelo.

Trở kháng không khớp giữa các nhà khoa học dữ liệu, kỹ sư dữ liệu và kỹ sư sản xuất

Dựa trên những gì tôi đã thấy trong lĩnh vực này, sự không phù hợp trở kháng giữa các nhà khoa học dữ liệu, kỹ sư dữ liệu và kỹ sư sản xuất là lý do chính khiến các công ty đấu tranh để đưa các mô hình phân tích vào sản xuất để tăng thêm giá trị kinh doanh.

Sơ đồ sau minh họa các bước cần thiết khác nhau và vai trò tương ứng như là một phần của sự không phù hợp trở kháng trong vòng đời học máy:

Trở kháng không khớp giữa phát triển mô hình và triển khai mô hình

Các nhà khoa học dữ liệu yêu Python, thời kỳ. Do đó, phần lớn các khung máy học / học sâu tập trung vào API Python. Cả API ổn định và tiên tiến nhất, cũng như phần lớn các ví dụ và hướng dẫn, đều sử dụng API Python. Ngoài hỗ trợ Python, thường có hỗ trợ cho các ngôn ngữ lập trình khác, bao gồm JavaScript để tích hợp web và Java để tích hợp nền tảng - mặc dù đôi khi có ít tính năng hơn và ít trưởng thành hơn. Bất kể nền tảng nào khác được hỗ trợ, rất có thể các nhà khoa học dữ liệu của bạn sẽ xây dựng và huấn luyện các mô hình phân tích của họ bằng Python.

Có sự không phù hợp trở kháng giữa phát triển mô hình bằng Python, ngăn xếp công cụ của nó và nền tảng dữ liệu đáng tin cậy có thể mở rộng với độ trễ thấp, thông lượng cao, mất dữ liệu và yêu cầu sẵn sàng 24/7 cần thiết cho việc nhập dữ liệu, tiền xử lý, triển khai và giám sát mô hình ở quy mô . Python, trong thực tế, không phải là công nghệ nổi tiếng nhất cho các yêu cầu này. Tuy nhiên, nó là một ứng dụng khách tuyệt vời cho một nền tảng dữ liệu như Apache Kafka.

Vấn đề là việc viết mã nguồn máy học để đào tạo mô hình phân tích bằng Python và khung máy học bạn chọn chỉ là một phần rất nhỏ trong cơ sở hạ tầng học máy trong thế giới thực. Bạn cần suy nghĩ về toàn bộ vòng đời của mô hình. Hình ảnh sau đây thể hiện khoản nợ kỹ thuật ẩn này trong các hệ thống máy học (cho thấy phần "mã ML" nhỏ như thế nào):

Vì vậy, bạn cần đào tạo và triển khai mô hình được xây dựng trong môi trường sản xuất có thể mở rộng để sử dụng nó một cách đáng tin cậy. Điều này có thể được xây dựng tự nhiên xung quanh hệ sinh thái Kafka hoặc bạn có thể sử dụng Kafka chỉ để nhập vào một cụm lưu trữ và xử lý khác như HDFS hoặc AWS S3 với Spark. Có nhiều sự đánh đổi giữa Kafka, Spark và một số cơ sở hạ tầng có thể mở rộng khác, nhưng cuộc thảo luận đó nằm ngoài phạm vi của bài đăng này. Hiện tại, chúng tôi sẽ tập trung vào Kafka.

Các giải pháp khác nhau trong ngành giải quyết một số phần nhất định của sự không phù hợp trở kháng giữa các nhà khoa học dữ liệu, kỹ sư dữ liệu và kỹ sư sản xuất. Chúng ta hãy xem một số tùy chọn sau:

  • Các tiêu chuẩn chính thức như Trao đổi mạng thần kinh mở (ONNX), Định dạng di động cho phân tích (PFA) hoặc Ngôn ngữ đánh dấu mô hình dự đoán (PMML): Một nhà khoa học dữ liệu xây dựng mô hình bằng Python. Nhà phát triển Java nhập nó trong Java để triển khai sản xuất. Cách tiếp cận này hỗ trợ các khung, sản phẩm và dịch vụ đám mây khác nhau. Bạn không phải dựa vào cùng một khuôn khổ hoặc sản phẩm để đào tạo và triển khai mô hình. Hãy xem xét ONNX, một tiêu chuẩn tương đối mới để học sâu - nó đã hỗ trợ TensorFlow, PyTorch và MXNet. Những tiêu chuẩn này có ưu và nhược điểm. Một số người thích và sử dụng chúng; nhiều không.
  • Các khung tập trung vào nhà phát triển như Deeplearning4j: Các khung này được xây dựng cho các kỹ sư phần mềm để xây dựng toàn bộ vòng đời học máy trên nền tảng Java, không chỉ là triển khai và giám sát mô hình, mà còn cả tiền xử lý và đào tạo. Bạn vẫn có thể nhập các mô hình khác nếu bạn muốn (ví dụ: Deeplearning4j cho phép bạn nhập các mô hình Keras). Tùy chọn này rất tuyệt nếu bạn: a) có các nhà khoa học dữ liệu có thể viết Java hoặc b) có các kỹ sư phần mềm hiểu các khái niệm học máy đủ để xây dựng các mô hình phân tích.
  • AutoML để xây dựng các mô hình phân tích với kinh nghiệm học máy hạn chế: Bằng cách này, các chuyên gia miền có thể xây dựng và triển khai các mô hình phân tích chỉ bằng một nút bấm. Công cụ AutoML cung cấp giao diện cho người khác sử dụng mô hình để dự đoán.
  • Nhúng các nhị phân mô hình vào các ứng dụng: Đầu ra của đào tạo mô hình là một mô hình phân tích. Chẳng hạn, bạn có thể viết mã Python để huấn luyện và tạo mô hình TensorFlow. Tùy thuộc vào khung, đầu ra có thể là các tệp văn bản, mã nguồn Java hoặc các tệp nhị phân. Ví dụ, TensorFlow tạo ra một tạo phẩm mô hình với Protobuf, JSON và các tệp khác. Bất kể định dạng đầu ra của khung máy học của bạn là gì, nó có thể được nhúng vào các ứng dụng để sử dụng cho các dự đoán thông qua API của khung (ví dụ: bạn có thể tải mô hình TensorFlow từ ứng dụng Java thông qua API Java của TensorFlow).
  • Máy chủ mô hình được quản lý trong đám mây công cộng như Google Cloud Machine Learning Engine: Nhà cung cấp đám mây đảm nhận gánh nặng về tính khả dụng và độ tin cậy. Nhà khoa học dữ liệu "chỉ" triển khai mô hình được đào tạo của mình và các kỹ sư sản xuất có thể truy cập nó. Sự đánh đổi quan trọng là điều này đòi hỏi giao tiếp RPC để thực hiện suy luận mô hình.

Trong khi tất cả các giải pháp này giúp các nhà khoa học dữ liệu, kỹ sư dữ liệu và kỹ sư sản xuất làm việc tốt hơn với nhau, có những thách thức tiềm ẩn trong các khoản nợ ẩn:

  • Thu thập dữ liệu (nghĩa là tích hợp) và tiền xử lý cần chạy ở quy mô
  • Cấu hình cần được chia sẻ và tự động để xây dựng liên tục và kiểm tra tích hợp
  • Cơ sở hạ tầng phục vụ và giám sát cần phù hợp với kiến ​​trúc doanh nghiệp và công cụ tổng thể của bạn

Vậy làm thế nào để hệ sinh thái Kafka có thể giúp đỡ ở đây?

Apache Kafka là thành phần chính để giải quyết sự không phù hợp trở kháng

Trong nhiều trường hợp, tốt nhất là cung cấp cho các chuyên gia các công cụ họ thích và biết rõ. Thách thức là kết hợp các bộ công cụ khác nhau và vẫn xây dựng một hệ thống tích hợp, cũng như quy trình học máy liên tục, có thể mở rộng. Do đó, Kafka không cạnh tranh mà bổ sung cho các lựa chọn thay thế được thảo luận khi giải quyết sự không phù hợp trở kháng giữa nhà khoa học và nhà phát triển dữ liệu.

Kỹ sư dữ liệu xây dựng một đường dẫn tích hợp có thể mở rộng bằng cách sử dụng Kafka làm cơ sở hạ tầng và Python cho các câu lệnh tích hợp và tiền xử lý. Nhà khoa học dữ liệu có thể xây dựng mô hình của họ bằng Python hoặc bất kỳ công cụ ưa thích nào khác. Kỹ sư sản xuất lấy các mô hình phân tích (bằng tay hoặc thông qua bất kỳ thiết lập tích hợp liên tục, tự động nào) từ nhà khoa học dữ liệu và nhúng chúng vào ứng dụng Kafka của họ để triển khai nó trong sản xuất. Hoặc, nhóm làm việc cùng nhau và xây dựng mọi thứ với Java và một khung công tác như Deeplearning4j.

Bất kỳ tùy chọn nào cũng có thể kết hợp tốt với Apache Kafka. Chọn các phần bạn cần, cho dù đó là lõi Kafka để truyền dữ liệu, Kafka Connect để tích hợp dữ liệu hoặc Luồng Kafka / KSQL để xử lý trước dữ liệu. Nhiều thành phần có thể được sử dụng cho cả đào tạo mô hình và suy luận mô hình. Viết một lần và sử dụng trong cả hai kịch bản như trong sơ đồ sau:

Tận dụng hệ sinh thái Apache Kafka cho cơ sở hạ tầng học máy

Giám sát môi trường hoàn chỉnh trong thời gian thực và ở quy mô cũng là một nhiệm vụ chung của Kafka. Một lợi ích rất lớn là bạn chỉ xây dựng một đường ống có độ tin cậy cao và có thể mở rộng một lần nhưng sử dụng nó cho cả hai phần của cơ sở hạ tầng máy học. Và bạn có thể sử dụng nó trong bất kỳ môi trường nào: trong đám mây, trong các trung tâm dữ liệu tại chỗ hoặc ở các cạnh nơi có các thiết bị IoT.

Giả sử bạn muốn xây dựng một đường dẫn tích hợp từ MQTT đến Kafka với KSQL để xử lý trước dữ liệu và sử dụng Kafka Connect để nhập dữ liệu vào HDFS, AWS S3 hoặc Google Cloud Storage, nơi bạn thực hiện đào tạo mô hình. Đường ống tích hợp tương tự, hoặc ít nhất là một phần của nó, có thể được sử dụng lại cho suy luận mô hình. Dữ liệu đầu vào MQTT mới có thể được sử dụng trực tiếp trong thời gian thực để đưa ra dự đoán.

Chúng tôi chỉ giải thích các phương án khác nhau để giải quyết sự không phù hợp trở kháng giữa các nhà khoa học dữ liệu và kỹ sư phần mềm trong môi trường Kafka. Bây giờ, chúng ta hãy thảo luận về một tùy chọn cụ thể trong phần tiếp theo, có lẽ là thuận tiện nhất cho các nhà khoa học dữ liệu: tận dụng Kafka từ Notebook Jupyter với các câu lệnh KSQL và kết hợp nó với TensorFlow và Keras để huấn luyện mạng thần kinh.

Các nhà khoa học dữ liệu kết hợp Python và Jupyter với các kiến ​​trúc truyền phát có thể mở rộng

Các nhà khoa học dữ liệu sử dụng các công cụ như Jupyter Notebook để phân tích, biến đổi, làm phong phú, lọc và xử lý dữ liệu. Dữ liệu được xử lý trước sau đó được sử dụng để huấn luyện các mô hình phân tích với các khung máy học / học sâu như TensorFlow.

Tuy nhiên, một số nhà khoa học dữ liệu thậm chí không biết các khái niệm "bánh mì và bơ" của các kỹ sư phần mềm, chẳng hạn như các hệ thống kiểm soát phiên bản như GitHub hoặc các công cụ tích hợp liên tục như Jenkins.

Điều này đặt ra câu hỏi về cách kết hợp trải nghiệm Python của các nhà khoa học dữ liệu với lợi ích của Apache Kafka như một nền tảng xử lý dữ liệu và phát trực tuyến có khả năng mở rộng được thử nghiệm chiến đấu.

Apache Kafka và KSQL cho các nhà khoa học dữ liệu và kỹ sư dữ liệu

Kafka cung cấp các tùy chọn tích hợp có thể được sử dụng với Python, như  Python Client của Confluent cho Apache Kafka hoặc  Proxy Proxy Confluent để tích hợp HTTP. Nhưng đây không thực sự là một cách thuận tiện cho các nhà khoa học dữ liệu, những người được sử dụng để phân tích và xử lý dữ liệu nhanh chóng và tương tác trước khi đào tạo và đánh giá mô hình. Tạo mẫu nhanh thường được sử dụng ở đây.

KSQL cho phép các nhà khoa học dữ liệu xem qua các luồng sự kiện Kafka và thực hiện xử lý luồng liên tục từ các môi trường Python nổi tiếng và được yêu thích của họ như Jupyter bằng cách viết các câu lệnh đơn giản giống như SQL để phân tích tương tác và xử lý dữ liệu.

Ví dụ Python sau đây thực hiện một truy vấn tương tác từ luồng Kafka tận dụng khung mã nguồn mở ksql-python , bổ sung một lớp Python trên giao diện REST của KSQL. Dưới đây là một vài dòng mã Python sử dụng KSQL từ Notebook Jupyter:

Kết quả của một truy vấn KSQL như vậy là một đối tượng trình tạo Python, bạn có thể dễ dàng xử lý với các thư viện Python khác. Điều này cảm thấy Python bản địa hơn nhiều và tương tự như NumPy, gấu trúc, scikit-learn và các thư viện Python rộng rãi khác.

Tương tự như tạo mẫu nhanh với các thư viện này, bạn có thể thực hiện các truy vấn tương tác và tiền xử lý dữ liệu với ksql-python. Kiểm tra công thức khởi động nhanh KSQLcông thức KSQL để hiểu cách viết truy vấn KSQL để dễ dàng lọc, chuyển đổi, làm giàu hoặc tổng hợp dữ liệu. Trong khi KSQL đang chạy các truy vấn liên tục, bạn cũng có thể sử dụng nó để phân tích tương tác và sử dụng từ khóa `LIMIT` như trong ANSI SQL nếu bạn chỉ muốn có được một số hàng cụ thể.

Vậy thỏa thuận lớn nào? Bạn hiểu rằng KSQL có thể cảm thấy Python có nguồn gốc với thư viện ksql-python, nhưng tại sao lại sử dụng KSQL thay vì hoặc ngoài các thư viện Python nổi tiếng và yêu thích của bạn để phân tích và xử lý dữ liệu?

Sự khác biệt chính là các truy vấn KSQL này cũng có thể được triển khai trong sản xuất sau đó. KSQL cung cấp cho bạn tất cả các tính năng từ Kafka dưới mui xe như khả năng mở rộng cao, độ tin cậy và xử lý chuyển đổi dự phòng. Câu lệnh KSQL tương tự mà bạn sử dụng trong Notebook Jupyter của mình để phân tích tương tác và tiền xử lý có thể mở rộng tới hàng triệu tin nhắn mỗi giây. Chịu lỗi. Với mất dữ liệu bằng không và chính xác một lần ngữ nghĩa. Điều này rất quan trọng và có giá trị để kết hợp nhà khoa học dữ liệu yêu thích Python với cơ sở hạ tầng sản xuất đáng tin cậy và có khả năng mở rộng cao.

Nói rõ hơn: KSQL + Python không phải là công cụ toàn diện cho mọi tác vụ kỹ thuật dữ liệu và nó không thay thế bộ công cụ Python hiện có. Nhưng nó là một lựa chọn tuyệt vời trong hộp công cụ của các nhà khoa học dữ liệu và kỹ sư dữ liệu và nó bổ sung các khả năng mới như nhận thông tin cập nhật theo thời gian thực khi dữ liệu nguồn thay đổi hoặc cập nhật mô hình được triển khai với phiên bản mới và được cải tiến.

Jupyter Notebook để phát hiện gian lận với Python KSQL và TensorFlow / Keras

Bây giờ chúng ta hãy xem một ví dụ chi tiết bằng cách sử dụng kết hợp KSQL và Python. Nó liên quan đến các ví dụ mã nâng cao sử dụng ksql-python và các thành phần phổ biến khác từ hệ sinh thái học máy của Python, như NumPy, gấu trúc, TensorFlow và Keras.

Trường hợp sử dụng là phát hiện gian lận để thanh toán thẻ tín dụng. Chúng tôi sử dụng bộ dữ liệu thử nghiệm từ Kaggle làm nền tảng để đào tạo bộ mã hóa tự động không giám sát để phát hiện sự bất thường và gian lận tiềm ẩn trong thanh toán. Trọng tâm của ví dụ này không chỉ là đào tạo mô hình, mà là toàn bộ cơ sở hạ tầng học máy, bao gồm nhập dữ liệu, tiền xử lý dữ liệu, đào tạo mô hình, triển khai mô hình và giám sát. Tất cả điều này cần phải có khả năng mở rộng, đáng tin cậy và hiệu suất.

Để biết ví dụ đầy đủ đang chạy và biết thêm chi tiết, xem tài liệu .

Chúng ta hãy xem một vài đoạn của Notebook Jupyter .

Kết nối với máy chủ KSQL và tạo luồng KSQL bằng Python:

from ksql import KSQLAPI
client = KSQLAPI('http://localhost:8088')

client.create_stream(table_name='creditcardfraud_source',
                     columns_type=['Id bigint', 'Timestamp varchar', 'User varchar', 'Time int', 'V1 double', 'V2 double', 'V3 double', 'V4 double', 'V5 double', 'V6 double', 'V7 double', 'V8 double', 'V9 double', 'V10 double', 'V11 double', 'V12 double', 'V13 double', 'V14 double', 'V15 double', 'V16 double', 'V17 double', 'V18 double', 'V19 double', 'V20 double', 'V21 double', 'V22 double', 'V23 double', 'V24 double', 'V25 double', 'V26 double', 'V27 double', 'V28 double', 'Amount double', 'Class string'],
                     topic='creditcardfraud_source',
                     value_format='DELIMITED')

Tiền xử lý thông tin thanh toán đến bằng Python:

  • Cột lọc không cần thiết
  • Lọc tin nhắn trong đó cột "lớp" trống
  • Thay đổi định dạng dữ liệu thành Avro để xử lý thuận tiện và hơn nữa

client.create_stream_as(table_name='creditcardfraud_preprocessed_avro',
                     select_columns=['Time', 'V1', 'V2', 'V3', 'V4', 'V5', 'V6', 'V7', 'V8', 'V9', 'V10', 'V11', 'V12', 'V13', 'V14', 'V15', 'V16', 'V17', 'V18', 'V19', 'V20', 'V21', 'V22', 'V23', 'V24', 'V25', 'V26', 'V27', 'V28', 'Amount', 'Class'],
                     src_table='creditcardfraud_source',
                     conditions='Class IS NOT NULL',
                     kafka_topic='creditcardfraud_preprocessed_avro',
                     value_format='AVRO')

Một số ví dụ khác cho việc sắp xếp dữ liệu có thể xảy ra và tiền xử lý với KSQL:

  • Thả các cột, lọc các thông báo trong đó giá trị của lớp Class, trống và thay đổi định dạng dữ liệu thành Avro:
CREATE STREAM creditcardfraud_preprocessed_avro WITH (VALUE_FORMAT='AVRO', KAFKA_TOPIC='creditcardfraud_preprocessed_avro') AS SELECT Time,  V1 , V2 , V3 , V4 , V5 , V6 , V7 , V8 , V9 , V10 , V11 , V12 , V13 , V14 , V15 , V16 , V17 , V18 , V19 , V20 , V21 , V22 , V23 , V24 , V25 , V26 , V27 , V28 , Amount , Class FROM creditcardfraud_source WHERE Class IS NOT NULL;
  • Ẩn danh (che dấu hai ký tự ngoài cùng bên trái, ví dụ: Hans Hans trở thành S ** ** ns):
SELECT Id, MASK_LEFT(User, 2) FROM creditcardfraud_source;
  • Mở rộng (thêm -1 nếu lớp Viking là  null):

SELECT Id, IFNULL(Class, -1) FROM creditcardfraud_source;
  • Hợp nhất / tham gia khung dữ liệu:
CREATE STREAM creditcardfraud_per_user WITH (VALUE_FORMAT='AVRO', KAFKA_TOPIC='creditcardfraud_preprocessed_avro') AS SELECT Time,  V1 , V2 , V3 , V4 , V5 , V6 , V7 , V8 , V9 , V10 , V11 , V12 , V13 , V14 , V15 , V16 , V17 , V18 , V19 , V20 , V21 , V22 , V23 , V24 , V25 , V26 , V27 , V28 , Amount , Class FROM creditcardfraud_enahnced c INNER JOIN USERS u on c.userid = u.userid WHERE V1 > 5 AND V2 IS NOT NULL AND u.CITY LIKE 'Premium%';

Notebook Jupyter chứa ví dụ đầy đủ. Chúng tôi sử dụng Python + KSQL để tích hợp, tiền xử lý dữ liệu và phân tích tương tác và kết hợp chúng với nhiều thư viện khác từ ngăn xếp công cụ học máy Python phổ biến để tạo mẫu và đào tạo mô hình:

  • Mảng / ma trận xử lý với NumPy và gấu trúc
  • Xử lý cụ thể theo ML (tách tàu / kiểm tra, v.v.) với scikit-learn
  • Phân tích tương tác thông qua trực quan hóa dữ liệu với Matplotlib
  • Đào tạo ML + đánh giá với TensorFlow và Keras

Suy luận mô hình và trực quan hóa cũng được thực hiện trong sổ ghi chép Jupyter. Sau khi bạn đã xây dựng một mô hình chính xác, bạn có thể triển khai nó ở bất cứ đâu để đưa ra dự đoán và tận dụng cùng một đường dẫn tích hợp để đào tạo mô hình. Một số ví dụ về triển khai mô hình trong môi trường Kafka là:

  • Các mô hình phân tích (TensorFlow, Keras, H2O và Deeplearning4j) được nhúng trong các dịch vụ siêu nhỏ của Kafka Streams
  • Phát hiện bất thường dữ liệu cảm biến IoT với mô hình được nhúng vào KSQL UDF
  • Giao tiếp RPC giữa ứng dụng Kafka Streams và máy chủ mô hình (Phục vụ hàng chục)

Python, KSQL và Jupyter cho việc tạo nguyên mẫu, trình diễn và triển khai sản xuất

Như bạn có thể thấy, cả về lý thuyết ( Nợ kỹ thuật ẩn của Google trong Hệ thống học máy ) và trên thực tế (nền tảng học máy của Uber Michelangelo ), việc xây dựng một cơ sở hạ tầng học máy có thể mở rộng, đáng tin cậy và hiệu quả.

Sự không phù hợp trở kháng giữa các nhà khoa học dữ liệu, kỹ sư dữ liệu và kỹ sư sản xuất phải được giải quyết để các dự án máy học mang lại giá trị kinh doanh thực sự. Điều này đòi hỏi sử dụng công cụ phù hợp cho công việc và hiểu cách kết hợp chúng. Bạn có thể sử dụng Python và Jupyter để tạo nguyên mẫu và trình diễn (thường Kafka và KSQL có thể ở trên đầu và không cần thiết nếu bạn chỉ muốn tạo mẫu nhanh, đơn giản trên bộ dữ liệu lịch sử) hoặc kết hợp Python và Jupyter với toàn bộ vòng đời phát triển của bạn để sản xuất triển khai ở quy mô.

Tích hợp các luồng sự kiện Kafka và các câu lệnh KSQL vào Notebook Jupyter cho phép bạn:

  • Sử dụng môi trường hiện có ưa thích của nhà khoa học dữ liệu (bao gồm Python và Jupyter) và kết hợp nó với Kafka và KSQL để tích hợp và liên tục xử lý dữ liệu truyền phát thời gian thực bằng cách sử dụng API trình bao bọc Python đơn giản để thực hiện các truy vấn KSQL
  • Dễ dàng kết nối với dữ liệu phát trực tuyến theo thời gian thực thay vì chỉ các lô dữ liệu lịch sử (có thể từ ngày, tuần hoặc tháng trước, ví dụ: đến qua các tệp CSV)
  • Hợp nhất các khái niệm khác nhau như phát trực tuyến dữ liệu cảm biến dựa trên sự kiện đến từ Kafka với các khái niệm lập trình Python như trình tạo hoặc đối tượng từ điển, bạn có thể sử dụng cho các công cụ xử lý dữ liệu Python hoặc các khung ML như NumPy, gấu trúc hoặc scikit-learn
  • Sử dụng lại logic tương tự để tích hợp, tiền xử lý và giám sát và chuyển nó từ Notebook Jupyter của bạn và tạo mẫu hoặc trình diễn cho các hệ thống thử nghiệm và sản xuất quy mô lớn

Python cho tạo mẫu và Apache Kafka cho một nền tảng phát trực tuyến có thể mở rộng không phải là đối thủ công nghệ. Chúng hoạt động rất tốt với nhau, đặc biệt nếu bạn sử dụng "công cụ trợ giúp" như Jupyter Notebooks và KSQL.

Hãy thử nó và cho chúng tôi biết suy nghĩ của bạn. Làm thế nào để bạn tận dụng hệ sinh thái Apache Kafka trong các dự án máy học của bạn?

Hữu ích 2 Chia sẻ Viết bình luận 0
Đã xem 3436