Tích hợp máy chủ mô hình Apache MXNet với Apache NiFi: Đã cập nhật


Lê Hoài Thương
2 năm trước
Hữu ích 12 Chia sẻ Viết bình luận 0
Đã xem 2915

Đã có những nâng cấp lên MXNet Model Server, Apache MXNet , cũng như Apache NiFi, vì vậy tôi đã nâng cấp bản demo ban đầu của mình để hỗ trợ điều này. Apache MXNet hiện đang ở phiên bản 1.2.1, trong khi Apache NiFi ở phiên bản 1.7.1. Tôi đang chụp ảnh từ PicSum.com, nơi cung cấp hình ảnh miễn phí, thật tuyệt vời. Chúng tôi đọc API REST đó với Apache NiFi và gửi tệp đó tới hai thuật toán khác nhau được lưu trữ bởi MXNet Model Server. Một là SqueezeNet 1.1, được sử dụng để phân loại đối tượng, chẳng hạn như xác định hotdogs, mèo, chó và bánh nướng xốp. Đây là những điều quan trọng! SSD là Single Shot Det, điều này sẽ tìm thấy một số thứ trong ảnh của bạn. Như đã đề cập trong bài viết của tôi khác bạn sẽ muốn kiểm gluon và ONNX cho các tùy chọn hơn.

Chụp ảnh từ picsum.com hình ảnh miễn phí và lưu trữ chúng trong hệ thống tập tin.

Xử lý tất cả các hình ảnh thông qua Bộ xử lý TensorFlow, Dự đoán SSD qua MMS và SqueezeNet v1.1 qua MMS. Ba cho giá của một, cảm ơn NiFi. Với bộ xử lý TensorFlow tùy chỉnh của tôi, bạn có thể thêm nó vào bất kỳ luồng nào có hình ảnh trong FlowFile.

Apache Zeppelin SQL chống lại tblsqueeze11

Ví dụ đầu ra từ Squeeze v1.1

Lưu trữ dữ liệu chung trong HDFS qua lược đồ

Ví dụ dữ liệu SSD JSON

Lưu lượng cao từ máy chủ

Máy chủ Apache NiFi chảy vào cửa hàng

Chuyển đổi sang Apache ORC

Trích xuất các thuộc tính

Chuyển đổi mảng JSON sang mảng khác

Dữ liệu ví dụ được lấy từ bộ xử lý TensorFlow

Các lược đồ trong sổ đăng ký lược đồ

Tạo bảng trong Zeppelin

Bảng truy vấn trong Zeppelin

Thư viện Python

git clone https://github.com/awslabs/mxnet-model-server.git


pip install opencv-python  -U
pip install scikit-learn -U
pip install easydict -U
pip install scikit-image -U
pip install numpy -U
pip install mxnet -U

pip3.6 install opencv-python -U
pip3.6 install scikit-learn -U
pip3.6 install easydict -U
pip3.6 install scikit-image -U
pip3.6 install numpy -U
pip3.6 install mxnet -U

Ví dụ chạy - Bóp v1.1

mxnet-model-server --models squeezenet=squeezenet_v1.1.model --service mms/model_service/mxnet_vision_service.py --port 9999

[INFO 2018-07-10 16:50:26,840 PID:7730 /usr/local/lib/python3.6/site-packages/mms/request_handler/flask_handler.py:jsonify:159] Jsonifying the response: {'prediction': [[{'probability': 0.3365139067173004, 'class': 'n03710193 mailbox, letter box'}, {'probability': 0.1522996574640274, 'class': 'n03764736 milk can'}, {'probability': 0.08760709315538406, 'class': 'n03000134 chainlink fence'}, {'probability': 0.08103135228157043, 'class': 'n02747177 ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin'}, {'probability': 0.04956872761249542, 'class': 'n02795169 barrel, cask'}]]}
[INFO 2018-07-10 16:50:26,842 PID:7730 /usr/local/lib/python3.6/site-packages/werkzeug/_internal.py:_log:88] 127.0.0.1 - - [10/Jul/2018 16:50:26] "POST /squeezenet/predict HTTP/1.1" 200 -
[INFO 2018-07-10 16:50:46,904 PID:7730 /usr/local/lib/python3.6/site-packages/mms/serving_frontend.py:predict_callback:467] Request input: data should be image with jpeg format.
[INFO 2018-07-10 16:50:46,960 PID:7730 /usr/local/lib/python3.6/site-packages/mms/request_handler/flask_handler.py:get_file_data:137] Getting file data from request.
[INFO 2018-07-10 16:50:47,020 PID:7730 /usr/local/lib/python3.6/site-packages/mms/serving_frontend.py:predict_callback:510] Response is text.
[INFO 2018-07-10 16:50:47,020 PID:7730 /usr/local/lib/python3.6/site-packages/mms/request_handler/flask_handler.py:jsonify:159] Jsonifying the response: {'prediction': [[{'probability': 0.1060439869761467, 'class': 'n02536864 coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch'}, {'probability': 0.06582894921302795, 'class': 'n01930112 nematode, nematode worm, roundworm'}, {'probability': 0.05008145794272423, 'class': 'n01751748 sea snake'}, {'probability': 0.03847070038318634, 'class': 'n01737021 water snake'}, {'probability': 0.03614763543009758, 'class': 'n09229709 bubble'}]]}
[INFO 2018-07-10 16:50:47,021 PID:7730 /usr/local/lib/python3.6/site-packages/werkzeug/_internal.py:_log:88] 127.0.0.1 - - [10/Jul/2018 16:50:47] "POST /squeezenet/predict HTTP/1.1" 200 -


mxnet-model-server --models SSD=resnet50_ssd_model.model --service ssd_service.py --port 9998

Sở thú mô hình máy chủ mô hình Apache MXNet

Vườn thú mô hình

Kết nối với MMS

/opt/demo/curl.sh
curl -X POST http://127.0.0.1:9998/SSD/predict -F "data=@$1" 2>/dev/null

/opt/demo/curl2.sh
curl -X POST http://127.0.0.1:9999/squeezenet/predict -F "data=@$1" 2>/dev/null

Chúng tôi lưu trữ tất cả dữ liệu kết quả của chúng tôi trong các bảng Hive và có thể truy vấn chúng trong Zeppelin để tạo bảng, biểu đồ và đồ thị. Chúng tôi cũng có thể kết nối với các bảng Hive này thông qua ODBC và JDBC để sử dụng các công cụ báo cáo khác hoặc hiển thị chúng với những thứ như Spring Boot.

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