Zyski:
- Możliwość wyboru urządzenia lub chmury i wybrania odpowiedniego narzędzia (ML Kit, Core ML, TensorFlow Lite) w oparciu o kryteria dotyczące prywatności, potrzeb offline, rozmiaru modelu i baterii
- Możliwość zapobiegania cichym błędom poprzez weryfikację wstępnego przetwarzania danych wejściowych (rozmiar i normalizacja) z dokumentu modelu podczas integracji modelu
- Możliwość oceny wskaźnika pewności i pomiaru wyniku za zgodą użytkownika i na prawdziwym urządzeniu, bez przedstawiania przewidywań o niskim stopniu pewności jako prawdy absolutnej.
Do tej pory wykorzystywaliśmy sztuczną inteligencję jako pomoc w przyspieszaniu procesu rozwoju. Przejdźmy teraz do drugiej roli AI: talentu wbudowanego w aplikację. Nowoczesne telefony mają możliwość uruchamiania modeli sztucznej inteligencji, takich jak rozpoznawanie obrazów, tłumaczenie tekstu, transkrypcja mowy itp. bezpośrednio na urządzeniu (na urządzeniu — we własnym procesorze telefonu, bez konieczności wchodzenia na serwer). sztuczna inteligencja na urządzeniu; Oferuje ogromną przewagę nad rozwiązaniami chmurowymi pod względem szybkości, prywatności i działania w trybie offline. W tej części dowiemy się, jak osadzić sztuczną inteligencję w aplikacji za pomocą iOS Core ML, wieloplatformowego TensorFlow Lite (obecnie znanego jako LiteRT) i gotowego rozwiązania Google ML Kit oraz jak wykorzystać sztuczną inteligencję jako asystenta w tej integracji.
Na urządzeniu czy w chmurze?
To pierwsza i najważniejsza decyzja architektoniczna. Sztuczna inteligencja na urządzeniu nie usuwa danych z telefonu – to ogromna zaleta w zakresie prywatności. Jest również natychmiastowy i działa w trybie offline, ponieważ nie ma opóźnień sieci. Jest to jednak ograniczone mocą obliczeniową i pamięcią urządzenia; Bardzo duże modele (np. modele z gigantycznym językiem) nie mieszczą się w telefonie lub powodują wyczerpanie baterii. Z kolei Cloud AI oferuje nieograniczoną moc, ale wysyła dane na serwer, wymaga sieci i powoduje opóźnienia.
kryterium
Na urządzeniu
Chmura (interfejs API w chmurze)
Prywatność
Dane pozostają na urządzeniu, mocne
Dane trafiają do serwera, wymagana uwaga
prędkość
Natychmiast, bez sieci
Zależy od opóźnienia sieci
nieaktywny
To działa
Nie działa
Rozmiar modelu
Ograniczone (zasoby telefoniczne)
nieograniczone
akumulator/ciepło
Efekty przy intensywnym użytkowaniu
Serwer obciążony, urządzenie zrelaksowane
Koszt
Bezpłatnie (źródło urządzenia)
Opłata za użycie
Zasada decyzji: wybierz opcję na urządzeniu, jeśli przetwarzane są dane osobowe/wrażliwe, trzeba pracować w trybie offline lub konieczna jest natychmiastowa reakcja. Jeśli potrzebujesz bardzo dużego modelu, zwróć się do chmury. To urządzenie koncentruje się na urządzeniu; W następnej części omówimy sztuczną inteligencję w chmurze.
Wskazówka: zawsze ustawiaj funkcję domyślną na urządzeniu, która obsługuje wrażliwe dane (zdrowie, dane biometryczne, lokalizacja). Wyrażenie „dane nie opuszczają urządzenia” jest nieocenione zarówno w kontekście przestrzegania zasad prywatności, jak i zaufania użytkowników, a także ma duże znaczenie w odniesieniu do etykiety prywatności sklepu.
Trzy sposoby: ML Kit, Core ML, TensorFlow Lite
Na początek najprościej jest ML Kit (Google): daje gotowe możliwości takie jak rozpoznawanie tekstu (OCR – czytanie tekstu z obrazu), wykrywanie twarzy, odczytywanie kodów kreskowych, tłumaczenie w kilku linijkach. Nie musisz trenować własnego modelu. Core ML (Apple) to najskuteczniejszy sposób na uruchomienie własnego modelu lub gotowego modelu na iOS; Wykorzystuje sprzęt Apple Neural Engine (procesor sztucznej sieci neuronowej). TensorFlow Lite/LiteRT to wieloplatformowe rozwiązanie, które pozwala na uruchomienie własnego wyszkolonego modelu zarówno na Androidzie, jak i iOS.
Ogólny przebieg integracji z AI wygląda następująco:
- Definicja talentu. Jasny cel, np. „Chcę przeczytać tekst na zdjęciu”.
- Wybór ścieżki. Jeśli jest gotowy talent, ML Kit; Core ML/TF Lite, jeśli dostępny jest model specjalny.
- Format modelu. .mlmodel (Core ML), .tflite (TF Lite). Wyjaśnia etapy transformacji AI.
- Kod integracyjny. Ładowanie modelu, wstępne przetwarzanie danych wejściowych, interpretacja danych wyjściowych.
- Test wydajności. Prędkość, pamięć, pomiar baterii na prawdziwym urządzeniu.
Uwaga: najczęstszym błędem AI podczas integracji modelu na urządzeniu jest wstępne przetwarzanie danych wejściowych — konwersja obrazu do rozmiaru i formatu kolorów oczekiwanego przez model. Jeśli model oczekuje 224x224 pikseli i podasz mu 300x300, wynik będzie bez znaczenia, ale nie pojawi się komunikat o błędzie. Zweryfikuj wartości wstępnego przetwarzania z dokumentu modelu.
Znajomość ograniczeń modelu
Model na urządzeniu podejmuje decyzje na podstawie danych, na których został przeszkolony. Model rozpoznawania obiektów wytrenowany wyłącznie na zdjęciach zrobionych w dzień będzie błędny na zdjęciach nocnych. Model ma wskaźnik pewności (pewność — stopień pewności modelu co do swojej odpowiedzi, zwykle od 0 do 1); Przedstawianie użytkownikowi wyników o niskiej pewności jako dokładnych jest niebezpieczne. Na przykład aplikacja do skanowania plam na skórze nie powinna zawierać informacji „zdecydowanie łagodne”, ale powinna zawierać informację „tak przewiduje model, proszę skonsultować się z lekarzem”. Wynik modelu jest rekomendacją, a nie diagnozą.
trzy mini etui
Przypadek 1 — Akceleracja za pomocą OCR. Aplikacja do śledzenia wydatków wyeliminowała konieczność ręcznego wprowadzania paragonów za pomocą funkcji rozpoznawania tekstu ML Kit. Użytkownik robi zdjęcie paragonu, a kwota i data uzupełniają się automatycznie. Skrócono czas ręcznego wprowadzania danych z 40 sekund do 8 sekund na paragon. Zespół zawsze prosił użytkownika o potwierdzenie kwoty odczytanej przez sztuczną inteligencję; ponieważ pomarszczone paragony miały 6% margines błędu. Automatyzacja + akceptacja człowieka była właściwą równowagą.
Przypadek 2 – Błąd przetwarzania wstępnego. Jeden zespół zintegrował model rozpoznawania roślin z TensorFlow Lite; Na testerze wyniki były losowe. Problem polegał na tym, że kod wygenerowany przez sztuczną inteligencję nie normalizował obrazu do zakresu [0,1], jakiego oczekiwał model (wartości pikseli pozostawiono na poziomie 0-255). Po dodaniu normalizacji dokładność wzrosła z 30% do 89%. Lekcja: wstępne przetwarzanie jest ciche, ale zabójcze.
Przypadek 3 – Zysk w zakresie prywatności. Aplikacja zdrowotna wykryła anomalię w danych dotyczących tętna w modelu Core ML na urządzeniu. Dane nigdy nie trafiły na serwer. Wybór ten umożliwił aplikacji otrzymanie frazy „nie zbiera danych” na etykiecie prywatności App Store i zwiększył prędkość pobierania w porównaniu do konkurencji. Wybór dokonany na urządzeniu był zarówno etyczny, jak i opłacalny komercyjnie.
Słaba zachęta/silna zachęta
Słaby monit: „Dodaj funkcję rozpoznawania obrazu do mojej aplikacji”.
Potężny monit: „Dodaj funkcję odczytu kwoty i daty do mojej aplikacji na Androida/Kotlina. - Użyj rozpoznawania tekstu Google ML Kit (na urządzeniu, offline) - Zrób zdjęcie z aparatu lub galerii - Wyodrębnij kwotę i datę z rozpoznanego tekstu za pomocą wyrażenia regularnego - Przedstaw użytkownikowi wynik do zatwierdzenia w polu EDYCJA, automatycznie zapisz - Obsługuj przepływ i odrzucanie uprawnień aparatu. Zapisz sytuacje związane z przetwarzaniem wstępnym i błędami, wyjaśnij kroki.
Szablony do kopiowania
Szablon wyboru ścieżki: „Chcę wprowadzić następującą funkcję: [funkcja]. Czy ma to być na urządzeniu czy w chmurze? Porównaj na podstawie: prywatności, potrzeb w trybie offline, rozmiaru modelu, baterii, kosztu. Poleć odpowiednie narzędzie (ML Kit / Core ML / TF Lite) i uzasadnij.
Szablon integracji: „Napisz integrację [model/możliwość] dla [platforma]:1) Ładowanie modelu2) Wstępne przetwarzanie danych wejściowych (oczekiwany rozmiar i normalizacja)3) Wywołanie wnioskowania4) Interpretacja wyników i sprawdzanie współczynnika ufności5) Ostrzeżenie dla użytkownika w przypadku wyniku o niskim poziomie pewnościPrzypomnij mi, abym zweryfikował wartości przetwarzania wstępnego z dokumentacji modelu.
Szablon oceny pewności: „Rozważ wynik pewności w tym kodzie wnioskowania: - Obecny wynik „dokładny” poniżej progu (np. 0,6) - Pokaż użytkownikowi notatkę „to jest szacunkowa” - Skieruj się do eksperta, jeśli obszar krytyczny (zdrowie, bezpieczeństwo) [kod]”
Szablon weryfikacji wydajności: „Wymień metryki, które muszę zmierzyć na rzeczywistym urządzeniu w celu integracji modelu na urządzeniu: czas wnioskowania, zwiększenie pamięci, wpływ baterii, ogrzewanie. Podaj metodę pomiaru dla każdego z nich”.
Typowe błędy
- Pominięcie przetwarzania wstępnego lub wykonanie go niepoprawnie. Zły rozmiar/normalizacja po cichu daje zły wynik.
- Ignorowanie wyniku zaufania. Przedstawienie oszacowania o niskim stopniu pewności jako dokładnego wprowadzi użytkownika w błąd.
- Testowanie modelu w emulatorze. Rzeczywista prędkość urządzenia i bateria są bardzo różne; zawsze mierz na prawdziwym sprzęcie.
- Niepotrzebne wysyłanie wrażliwych danych do chmury. Wybór chmury, gdy możliwe jest korzystanie z urządzenia, stanowi ryzyko dla prywatności.
- Ignorowanie rozmiaru modelu. Aplikacje dużych modeli zawyżają rozmiar pobierania i ulegają awarii na niskim sprzęcie.
- Zapominanie o limicie szkoleniowym modelu. Modelka myli się w stanie, w którym nie widzi (noc, inny język); Wyjaśnij to użytkownikowi.
Podsumowując
Sztuczna inteligencja na urządzeniu zapewnia prywatność, szybkość i działanie w trybie offline, przechowując dane w telefonie; Ograniczeniem jest moc urządzenia i rozmiar modelu. Zestaw ML jest używany do gotowych funkcji, a Core ML (iOS) i TensorFlow Lite (wieloplatformowy) są używane do modeli niestandardowych. Cichy zabójca integracji to niewłaściwe przetwarzanie wstępne; Rozmiar wejściowy i normalizacja są weryfikowane na podstawie dokumentacji modelu. Każdemu wynikowi towarzyszy poziom pewności, a przewidywania o niskim poziomie pewności nie są przedstawiane jako prawda absolutna. Decyzje są podejmowane na prawdziwym urządzeniu, a nie na emulatorze.
Zadanie aplikacji
W przypadku funkcji „odczytywania tekstu ze zdjęcia” lub „odczytywania kodów kreskowych” zapytaj sztuczną inteligencję, czy ma to być na urządzeniu, czy w chmurze, korzystając z „szablonu wyboru ścieżki”, a następnie poproś o plan oparty na ML Kit za pomocą „szablonu integracji”. Sprawdź, czy w kodzie znajduje się etap przetwarzania wstępnego oraz proces zatwierdzania/edycji przez użytkownika. Ustaw próg wyniku zaufania i napisz, co zrobisz, jeśli wynikiem będzie niskie zaufanie.
lista kontrolna
- [ ] Podjąłem decyzję dotyczącą urządzenia/chmury w oparciu o kryteria
- [ ] Wybrałem odpowiednie narzędzie (ML Kit / Core ML / TF Lite)
- [ ] Sprawdziłem wymiar wstępnego przetwarzania i normalizację z dokumentacji modelu
- [ ] Sprawdziłem wynik zaufania i ostrzegłem o wynikach niskiego poziomu zaufania
- [ ] Przedstawiłem wynik użytkownikowi do zatwierdzenia/edycji, nie zapisałem go na ślepo
- [ ] Zmierzyłem wydajność na prawdziwym urządzeniu, a nie na emulatorze