Avatar
0
v5b8jb3zbjd2o0nj Beginner
Deploy spark, pytorch, fastapi lên docker
Cho mình hỏi là mình có dự án sử model face recognition để trích xuất đặc trưng của ảnh, sau đó sẽ dùng đặc trưng trích xuất được truy vấn thông tin bằng model LSH với pyspark. Mình sẽ sử dụng fastapi để tạo api nhận ảnh đầu vào và trả ra kết quả truy vấn được. Mình muốn deploy các phần trên vào một docker container thì có được không ạ
  • Answer
Remain: 5
1 Answer
Avatar
tvd12 Beginner
tvd12 Beginner
Được bạn nhé, vì cái này chính xác nó là 1 dịch vụ độc lập để phân lớp ảnh.
  • 0
  • Reply
Mình đang bị khó ở phần deploy spark. Nên để spark ở 1 container riêng và kết nối pyspark đến container đó hay là mình sẽ để tất cả vào 1 container ạ. Nếu được bạn có thể cho mình một số gợi ý để thực hiện nó đc không  –  v5b8jb3zbjd2o0nj 1715046690000
Theo quan điểm cá nhân của mình thì để hết vào 1 container sẽ dễ vận hành hơn nhiều, sau có clone ra nếu tải lớn cũng đơn giản, ko hiểu là bạn đang gặp khó về devops hay là gặp khó về mặt tư tưởng thiết kế nhỉ?  –  tvd12 1715079453000
Về mặt thiết kế ạ. Mình chạy ở local thì 1 request sẽ mất khoảng 20s để đi qua các bước trích xuất đặc trưng, truy vấn thông tin, nhất là ở bước truy vấn. Không biết có phải do mình chạy trên window hay không mà spark chạy khá chậm. Nên mình cảm thấy flow hệ thống của mình đang khá có vấn đề ạ.  –  v5b8jb3zbjd2o0nj 1715132159000
Tải CPU, GPU của 1 container có cao không bạn nhỉ? Hay chỉ bị chậm về mặt thời gian thôi?  –  monkey 1715143338000
Không cao ạ, chỉ bị chậm về mặt thời gian ạ.

result = loaded_model.approxNearestNeighbors(df, key, 10)

list_id = result.select(f.collect_list('id')).first()[0]

Đây là lệnh truy vấn và get thông tin bằng pyspark. Các bước như nhận diện khuôn mặt, trích xuất đặc trưng, truy vấn đều trong troảng 1 2s. Chỉ có bước select ở trên là tốn tầm 10s hơn ạ tuy là trong kết quả trả về chỉ có 10 dòng dữ liệu

 –  v5b8jb3zbjd2o0nj 1715238621000
Vậy thì việc sử dụng 1 container không phải vấn đề, kể cả khi bạn tách thành 2 container, 1 cho việc trích xuất vector đặc trưng, 1 để đoán phân lớp thì cũng chỉ chuyển việc chậm từ chỗ này sang chỗ kia, thậm chí là lúc đó việc tổ chức hệ thống còn phức tạp hơn nhiều, nên cá nhân mình nghĩ bạn nên tối ưu phục vụ trên 1 container là hợp lý, ko thể tối ưu được thì scale theo chiều ngang, là duplicate ra là ok  –  tvd12 1715313406000