Cześć,
napisałem aplikację React z backendem w Python-ie. Raz na jakiś czas powiedzmy co 30 sekund musi przeanalizować zdjęcie pod kątem wykrywania twarzy. Teraz pytanie moje brzmi - Jaki wybrać hosting, żeby taka operacja była jak najbardziej wydajna?
@Gouda105: Może jakieś rozwiązanie chmurowe? AWS, Azure, GCP udostępniają wiele usług stricte związanych z ML.
A ta logika wykrywania twarzy to jest zaimplementowana w Twojej aplikacji? Jeśli tak to może warto wynieść tą logikę poza aplikację do chmury np Azure Functions w planie consumption ma fajne warunki cenowe:
Azure Functions consumption plan is billed based on per-second resource consumption and executions. Consumption plan pricing includes a monthly free grant of 1 million requests and 400,000 GB-s of resource consumption per month per subscription in pay-as-you-go pricing across all function apps in that subscription.
Do tego trzeba jeszcze doliczyć koszt Azure Storage, ale to grosze.
Wtedy aplikacja może siedzieć sobie na dowolnym hostingu i tylko strzelać po HTTP do tej funkcji jak ma potrzebę. Po co obciążać niepotrzebnie serwer aplikacji dodatkowymi obliczeniami?
@markone_dev: Wygląda ciekawie. Czy jest jakiś sposób, żeby obliczyć ile zasobów zużywa wykonanie mojej funkcji w Pythonie, aby zorientować się z jakimi kosztami to się wiąże? Dodatkowo mam pytanie odnośnie Azure Storage. Do czego konkretnie miałoby służyć? Jeśli dobrze rozumiem Azure Functions odpowiadają za moc obliczeniową mojego kodu, a Azure Storage ma go przechowywać? Dodam, że moja aplikacja niczego nie przechowuje. Obraz jest przesyłany przez URI data image, a nie przechowywany na serwerze.
Czy jest jakiś sposób, żeby obliczyć ile zasobów zużywa wykonanie mojej funkcji w Pythonie, aby zorientować się z jakimi kosztami to się wiąże?
Tak. Zainteresuj się narzędziami APM (Application Performance Monitoring) takimi jak New Relic, Senty czy Prometheus. Jest tego trochę na rynku więc jest w czym wybierać. Większość platform to drogie kobyły dedykowane pod duże firmy i aplikacje, ale mają wersje Free do zastosowań niekomercyjnych.
Jeżeli nie chcesz korzystać z APM to możesz pobawić się PerfCounters (perfmon
) jak masz Windows czyperf
na Linuxie.
Dodatkowo mam pytanie odnośnie Azure Storage. Do czego konkretnie miałoby służyć? Jeśli dobrze rozumiem Azure Functions odpowiadają za moc obliczeniową mojego kodu, a Azure Storage ma go przechowywać?
Wynika to z tego, że runtime Azure Functions oparty jest o funkcjonalności Azure Storage takie jak Blob, Queue czy Table. Co więcej w planie Consumption kod twojej funkcji oraz jej konfiguracja i wszystkie pliki są trzymane w Azure Files na Storage Account jak sam zauważyłeś.
Jeżeli nie masz potrzeby przechowywać żadnych danych na Storage Account i nie korzystać z Tables, Queues, czy Blobs to wyjdzie cię to naprawdę tanio.
Robiłem kiedyś coś takiego na azure miałem front na jakimś hostingu który robił zdjęcie i wysyłał do azure
https://azure.microsoft.com/en-us/products/cognitive-services/face/#overview
Bardzo prosta sprawa, przykłady są.
Jak chcesz używać swoich rozwiązań to:
a) postawisz swój własny komputer. tu wystarczy np. jetson nano ale nie mam pojęcia o jakich zastosowaniach myślisz.
b) kupić maszynę z gpu. tylko to nie będzie takie tanie.
edit azure facerecognition:
free - Web/Container 20 transactions per minute Face Detection
Face Verification
Face Identification
Face Grouping
Similar Face Search
30,000 transactions free per month