logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ESP i ChatGPT - jak używać OpenAI API na ESP8266? GPT-3.5, PlatformIO

p.kaczmarek2 15 Kwi 2023 14:38 7659 17
  • ESP i ChatGPT - jak używać OpenAI API na ESP8266? GPT-3.5, PlatformIO
    Pokażę tutaj uruchomić ChatGPT na ESP8266 - oczywiście nie bezpośrednio, lecz poprzez API OpenAI. Zademonstruję prosty kod wysyłający odpowiednie zapytanie do API poprzez HTTPS, wraz z omówieniem przekazania klucza API oraz obsługi formatu JSON. Rezultatem będzie możliwość odpytania słynnego Chatbota bezpośrednio z ESP, bez użycia komputera czy tam nawet Raspberry Pi.
    Temat ten będzie stanowić podstawę dla osób chcących wykonać jakieś DIY z modelami językowymi OpenAI na ESP8266, omówię tu absolutne podstawy, a w przyszłości być może pokażę coś bardziej zaawansowanego.

    API OpenAI
    Modele językowe OpenAI są dostępne poprzez API, tzn. my tylko wysyłamy do serwerów OpenAI żądanie, opisujące co model językowy ma wykonać, a potem odbieramy ich odpowiedź. Nie uruchamiamy oczywiście ChatGPT na naszym sprzęcie, nie jest ono nawet możliwe do pobrania.
    API OpenAI jest bardzo bogate i oferuje różne funkcje (oraz ceny; w zależności od tego jaki model językowy nas interesuje), ale nie ma sensu bym tutaj kopiował Wam ich dokumentacji. Wszystko znajdziecie poniżej:
    https://openai.com/blog/openai-api
    Szczegółowa dokumentacja dostępna jest tutaj:
    https://platform.openai.com/docs/api-reference/making-requests
    Krótka lektura uświadamia nam co mamy zrobić. Musimy wysłać żądanie POST o nagłówkach:
    - Content-Type: application/json
    - Authorization: Bearer NASZ_KLUCZ
    - Content-Length: DŁUGOŚĆ_JSONA (dla zasady warto to dodać)
    i treści:
    Kod: JSON
    Zaloguj się, aby zobaczyć kod

    na endpoint:
    
    https://api.openai.com/v1/chat/completions
    


    Model określa model językowy, z którego korzystamy. Lista modeli dostępa jest tutaj (też wymaga klucza API):
    
    https://api.openai.com/v1/models
    

    więc pobrać ją można np. poprzez CURL:
    
    curl https://api.openai.com/v1/models \
      -H "Authorization: Bearer $OPENAI_API_KEY"
    

    Parametr temperature należy do zakresu [0,2], im wyższy, tym odpowiedzi są bardziej losowe, a im niższy, tym bardziej deterministyczne.

    Po wysłaniu wspomnianego już pakietu otrzymamy odpowiedź, która wygląda mniej więcej tak:
    Kod: JSON
    Zaloguj się, aby zobaczyć kod

    Wszystko wygląda bardzo fajnie, zatem gdzie jest haczyk?
    Haczyk jest mały - to API jest płatne. Płacimy za ilość tokenów, czyli zasadniczo tyle ile zużyjemy, tyle musimy opłacić. Szczegóły tutaj:
    https://openai.com/pricing
    Tokeny są dość zbliżone do słów, ale nie są słowami - wg. samego OpenAI 1000 tokenów to około 750 słów.
    Ceny zależą od modelu; oto ceny GPT-4:
    ESP i ChatGPT - jak używać OpenAI API na ESP8266? GPT-3.5, PlatformIO
    Ceny ChatGPT (gpt-3.5-turbo) są nieco mniejsze:
    ESP i ChatGPT - jak używać OpenAI API na ESP8266? GPT-3.5, PlatformIO
    Są też inne modele:
    ESP i ChatGPT - jak używać OpenAI API na ESP8266? GPT-3.5, PlatformIO

    Użyta płytka
    Do projektu użyłem płytki NodeMcu v3 CH340, którą można kupić za nawet 17zł:
    ESP i ChatGPT - jak używać OpenAI API na ESP8266? GPT-3.5, PlatformIO
    ESP i ChatGPT - jak używać OpenAI API na ESP8266? GPT-3.5, PlatformIO
    ESP i ChatGPT - jak używać OpenAI API na ESP8266? GPT-3.5, PlatformIO

    Visual Code i Platform IO, pierwsze kroki
    Do projektu zdecydowałem się użyć Visual Code z PlatformIO, jest to moim zdaniem bardziej wygodne i responsywne środowisko niż Arduino IDE.
    https://platformio.org/
    Instalujemy darmowe środowisko oparte na licencji MIT, Microsoft's Visual Studio Code, a potem dodatek PIO.
    Po zainstalowaniu wszystkiego można zacząć od podstaw:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Oto mój platformio.ini, dla tych którzy nie wiedzą jak naszą płytkę skonfigurować:
    
    ; PlatformIO Project Configuration File
    ;
    ;   Build options: build flags, source filter
    ;   Upload options: custom upload port, speed and extra flags
    ;   Library options: dependencies, extra library storages
    ;   Advanced options: extra scripting
    ;
    ; Please visit documentation for the other options and examples
    ; https://docs.platformio.org/page/projectconf.html
    
    [env:nodemcuv2]
    upload_speed = 115200
    monitor_speed = 115200
    platform = espressif8266
    board = nodemcuv2
    framework = arduino
    lib_deps = bblanchon/ArduinoJson@^6.21.1
    

    Rezultat, wszystko działa:
    ESP i ChatGPT - jak używać OpenAI API na ESP8266? GPT-3.5, PlatformIO
    Można by postawić tutaj ArduinoOTA i wgrywać wsad przez WiFi, ale to jest temat o OpenAI API i tego się trzymajmy.


    ESP8266 i HTTPS
    Pierwszym problemem jaki napotykamy jest potrzeba użycia szyfrowanej wersji HTTP, czyli HTTPS. Nieco nam to utrudnia zabawę, pewnie z mojego ulubionego PIC18F67J60 bym już połączenia szyfrowanego nie nawiązał, ale na szczęście na ESP8266 HTTPS jest wspierany i są gotowe na to przykłady. Poniżej jeden z nich:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Tutaj nieco uprościłem sprawę, bo pozwoliłem sobie uruchomić tryb bez weryfikacji certyfikatu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    ale myślę, że w przypadku małego hobbystycznego projektu/demonstrancji to nie jest problem.
    Co ten program robi? Zasadniczo dwie rzeczy.
    W setup łączymy się z naszą siecią WiFi:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    W pętli, co dwie minuty, próbujemy połączyć się z przykładową stroną po HTTPS i wydrukować uzyskaną odpowiedź. Wysyłamy tutaj żądanie GET.
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Użyta tutaj w ramach przykładu strona zwraca informacje o wspieranych przez nasze połączenie standardach szyfrowania i zwraca je w formacie JSON:
    https://www.howsmyssl.com/a/check
    Można też odwiedzić tę stronę normalnie:
    https://www.howsmyssl.com/
    Program działa:
    ESP i ChatGPT - jak używać OpenAI API na ESP8266? GPT-3.5, PlatformIO
    W przypadku odwiedzin strony z przeglądarki otrzymuję informację, że moja przeglądarka wspiera TLS 1.3. W przypadku użytej platform z ESP jest to tylko wersja TLS 1.2, ale nie jest to na ten moment problemem.


    Obsługa JSON
    Jak już wiemy, potrzebny będzie nam format zapisu JSON. Przyda się on zarówno przy wysyłaniu danych do serwera, jak i przy jego odbiorze. Czyli zasadniczo musimy umieć wpisać dane do JSONa, oraz potem te dane z niego wyłuskać.
    Wpisywanie do JSONa można by zrobić częściowo na sztywno, poprzez operacje na String lub jeden duży sprintf, ale przecież tu mamy do wszystkiego biblioteki, więc po co sobie komplikować?
    Załączamy bibliotekę ArduinoJSON przez PlatformIO:
    ESP i ChatGPT - jak używać OpenAI API na ESP8266? GPT-3.5, PlatformIO
    Załączamy nagłówek:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Chcemy utworzyć następujący tekst JSON:
    Kod: JSON
    Zaloguj się, aby zobaczyć kod

    Mamy tu wszystko, i zwykłe zmienne (klucz-wartość), i tablicę i obiekty.
    Ale dzięki ArduinoJSON wszystko jest bardzo proste:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Jak widać, zmienne ustawiamy za pomocą operatora [], tablicę tworzymy poprzez funkcję createNestedArray, a object w niej możemy utworzyć funkcją createNestedObject. Wszystko wygodnie, ale jak to zamienić na tekst?
    Kod: text
    Zaloguj się, aby zobaczyć kod

    I to wszystko - po użyciu tej funkcji w jsonString mamy już tekst JSON reprezentujący wcześniej utworzoną strukturę.

    Jeszcze tylko pytanie, czy można w drugą stronę? Z napisu na obiekty? Oczywiście, w ten sposób:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Pierwszy request do API OpenAI
    Pora złożyć wszystko w całość. Podstawową wiedzę oraz wysyłanie GET po HTTPS już mamy.
    GET wysyłane było tak:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    można to łatwo przerobić na POST:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Tyle, że POST wymaga podania zawartości ciała żądania - wskaźnik na dane i długość.
    Wsadzimy tam nasz JSON string, o którego generowaniu wspominałem wcześniej:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Trzeba go jeszcze wygenerować - tak jak w poprzednim akapicie:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Ale to nie wszystko. Trzeba jeszcze ustawić pola z nagłówka żądania. Między innymi tutaj znajduje się nasz klucz do API:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Ustawiamy również rodzaj zawartości nagłówka na JSON.
    W zasadzie tyle starczy by uzyskać pierwsze rezultaty.
    Oto cały kod, poglądowo:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Proszę pamitać o uzupełnieniu tych linijek:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Uruchamiamy i już mamy pierwsze rezultaty:
    ESP i ChatGPT - jak używać OpenAI API na ESP8266? GPT-3.5, PlatformIO
    Oto kilka otrzymanych odpowiedzi w formie tekstu:
    Kod: JSON
    Zaloguj się, aby zobaczyć kod


    Kod: JSON
    Zaloguj się, aby zobaczyć kod


    Kod: JSON
    Zaloguj się, aby zobaczyć kod

    Bez dodatkowej konfiguracji pomysły się nieco powtarzają. Oto drugi o samochodziku zdalnie sterowanym:
    Kod: JSON
    Zaloguj się, aby zobaczyć kod

    W odpowiedzi są również informacje o ilościach użytych tokenów, co pozwala nam oszacować lepiej ile kosztowało nas dane zapytanie. Pole created to z kolei czas Unix epoch, określa kiedy wygenerowano odpowiedź.

    Ulepszamy request do API OpenAI
    Warto jest jeszcze jakoś poprawnie obsłużyć otrzymaną odpowiedź. Tak jak pisałem, jest ona w formacie JSON. Można ją łatwo wczytać do wygodnych struktur danych:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Teraz trzeba ją jeszcze przetworzyć.
    Obiekt jest łatwo pobrać, tablicę natomiast należy rzutować jeszcze do typu JsonArray:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Dopiero potem można iterować jej elementy:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Warto zwrócić uwagę na różnice w pomieraniu napisu (String) i liczby całkowitej (int).
    Reszta powinna być już dość prosta:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Dzięki temu można z formatu JSON np. wyciągnąć samą ostatnią odpowiedź AI i potem np. wysłać ją dalej do systemu ludzkiej mowy, by nasz ESP "przemówił" myślą ChatGPT.

    Podsumowanie
    To był najprostszy przykład użycia API OpenAI z ESP8266, w pełni oparty na gotowych bibliotekach. Do obsługi HTTPS użyliśmy WiFiClientSecureBearSSL, a z obsługą JSON pomógł nam DynamicJsonDocument. Do skorzystania z jednego z najpotężniejszych modeli językowych starczyła nam płytka z ESP8266 za 17zł oraz klucz API OpenAI, który niestety wymaga opłacenia ich API. W przypadku ChatGPT zabawa kosztuje 0.002$ za 1000 tokenów (średnio 750 słów).
    Przed użyciem kodu w poważnym projekcie należałoby go uzupełnić o poprawną weryfikację certyfikatu SSL oraz można by dodać utrzymywanie kontekstu (historii rozmowy) ChatGPT, ale o tym już innym razem.
    Czy widzicie jakieś potencjalne zastosowania na ChatGPT na ESP8266 bądź ESP32? Zapraszam do dyskusji.

    Fajne? Ranking DIY
    Pomogłem? Kup mi kawę.
    O autorze
    p.kaczmarek2
    Moderator Smart Home
    Offline 
  • #2 20540769
    gulson
    Administrator Systemowy
    Fajnie by było wyświetlić odpowiedź na małym wyświetlaczu, może w następnym wątku? :)

    A więc stało się to dość szybko, ElektrodaBot otrzymał swoje fizyczne oblicze w urządzeniach elektronicznych. Zaraz będzie odczytywał swoje czujniki, podejmował decyzję i wpływał na prawdziwy świat za pomocą swoich siłowników. :)

    A tak naprawdę, super! Właśnie na reddit ktoś się pochwalił, że zbierał z bazy danych czujników zajętość miejsc parkingowych. Po czym rozmawiał ChatGPT na temat tego, aby wskazał mu, gdzie w danym dniu i danej godzinie ma najwyższe prawdopodobieństwo znalezienia wolnego miejsca parkingowego.

    The future is now, old man.

    Dodano po 7 [minuty]:

    A właśnie wydali https://github.com/Significant-Gravitas/Auto-GPT czyli kod pozwalający podejmować sztucznej inteligencji kilka samodzielnych decyzji, celem osiągnięcia celu zdefiniowanego przez człowieka. Właśnie to analizuję, ale wygląda wstępnie na to, że zadanie użytkownika rozbija na drobne zadania, po czym korzysta z Google, modeli językowych, aby zaproponować użytkownikowi krok po kroku realizację obranego celu. Czyli niejako sztuczna inteligencja coraz bardziej się usamodzielnia. Teraz w tym wątku wyszła na zewnątrz do elektroniki i mamy w końcu Terminatora v0.1! Ups.
  • #3 20540800
    p.kaczmarek2
    Moderator Smart Home
    Trzeba pomyśleć o jakimś lepszym IO głosowym, czyli zarówno zamiana mowy na tekst a potem i tekstu na mowę. Dodatkowo też można spróbować podpiąć różne czujniki i peryferia, np. czujnik wilgotności/temperatury, a może i pobieranie np. prognozy pogody z innego API (są różne dostępne) i zrobić np. AI doradcę dla żony pomagającego jej wybrać odpowiednie ubrania do wyjścia... w prompt można by umieścić informacje o preferencjach użtkownika co do stylu i info odnośnie pogody.

    Ogólnie te AI jest na tyle dobre, że pewnie by nawet potrafiło nam doradzić jakie zrobić potrawy z tego co mamy w lodówce i jedynym kłopotem technicznym byłoby określenie co w tej lodówce jest... chociaż... podobno nowszy model może wziąć na wejście zdjęcie składników i z samego zdjęcia poznać co jest czym. Ciekawe na ile dobrze to działa.
    Pomogłem? Kup mi kawę.
  • #4 20540813
    gulson
    Administrator Systemowy
    Sam jestem ciekawy, czy model językowy się sprawdzi do podejmowania decyzji na podstawie czujników, których stan tak naprawdę nie jest opisywany tekstem a danym poziomem (np. liczbami).
    Nie wiem, czy nie trzeba by było jednak stworzyć model bardziej umiejący analizować dane liczbowe. Wiem, że Bloomberg coś takiego zrobił do finansów - BloombergGPT.
    Na pewno model językowy się sprawdzi, jak Terminator v0.1 będzie chciał coś powiedzieć, czyli skomunikować się z człowiekiem. Tak samo model językowy się sprawdzi, jak mu wydamy polecenie "Poszukać John Connor". Po prostu model językowy jest świetnym interfejsem do porozumienia się z człowiekiem, bo tekst i mowa to jest to, czym się komunikujemy.
    Natomiast, aby nasz Terminator v0.1 sam podejmował decyzje i nie halucynował, czy oszukiwał siebie (jak to jest często z modelami językowymi), powinniśmy chyba opracować swój model dla elektroniki. Na razie czegoś tak mocnego, jak GPT4 nie ma. Pewnie kwestia czasu.
  • #5 20540852
    p.kaczmarek2
    Moderator Smart Home
    Z ciekawości patrzę czy ChatGPT dostępny na OpenAI jest w stanie poprzez język naturalny sterować oświetleniem. Na razie to tylko próba, ale oto prompt i rozmowa:
    ESP i ChatGPT - jak używać OpenAI API na ESP8266? GPT-3.5, PlatformIO

    Ciekawe, czy odpowiednim promptem dałoby się ustawić bota tak, by używał tych komend "po cichu", bez umieszczenia ich w "głosowym" tekście. Oczywiście idea jest taka, że bot sobie pracuje i "gada", a program w tle odbiera od niego te komendy do robienia automatyki.

    Added after 21 [minutes]:

    To dopiero jest ciekawe:
    ESP i ChatGPT - jak używać OpenAI API na ESP8266? GPT-3.5, PlatformIO
    Odpowiedni prompt i nawet model ChatGPT jest w stanie jednocześnie rozmawiać z użytkownikiem i wykonywać komendy w tle. Parser odpowiedzi z API by to odpowiednio wydzielił.

    Added after 3 [minutes]:

    ESP i ChatGPT - jak używać OpenAI API na ESP8266? GPT-3.5, PlatformIO
    Pomogłem? Kup mi kawę.
  • #6 20541035
    khoam
    Poziom 42  
    gulson napisał:
    Zaraz będzie odczytywał swoje czujniki, podejmował decyzję i wpływał na prawdziwy świat za pomocą swoich siłowników

    To jest akurat to najważniejsze. Natomiast komunikacja czujnika z "centralą" AI za pomocą języka naturalnego jest IMHO pozbawiona sensu - niepotrzebne zużycie mocy CPU i pamięci. Czujnik nie jest człowiekiem, więc interfejs w postaci ChatGPT nie znajduje tu zastosowania. Oczywiście mogę sobie wyobrazić super-czujnik z wbudowanym ekranem TFT, który będzie gadał jak człowiek - koszt takiego rozwiązania jest zbyt wysoki. Co do domowej centralki "AI" sterującej czujnikami, to tu oczywiście można popłynąć z fantazją - w końcu to może być po prostu pecet lub tablet.
  • #8 20541467
    gulson
    Administrator Systemowy
    ChatGPT czy Whisper, oczywiście jako interfejs wejściowy/wyjściowy dla człowieka. W przyszłości wiadomo, że Terminator się uniezależni i będzie podejmował decyzje samodzielnie na podstawie swoich własnych modeli. Model językowy będzie wtedy zbędny, będzie można w większości przypadku samodzielnych maszyn usunąć, jako marnowanie zasobów :)
    Natomiast sam pomysł z GPT można wykorzystać. Tam chodzi o znajdowanie kolejnego słowa (tokena), aby zbudować sensowne zdanie.
    W przypadku Terminatora będzie musiał na podstawie czujników sam podjąć decyzję, gdzie i jak się ruszyć, czyli niejako przewidzieć kolejne swoje ruchy siłowników w oparciu o czujniki, kamery.
    Oczywiście można by było go zostawić z podstawowym modelem i niech się uczy, niech się przewraca, ale wydaje mi się, że warto by było od razu wgrać mu potężną próbkę danych modelowych, aby wiedział, jak się zachować. Podobnie, jest w przypadku modeli językowych otwarto źródłowych Vicuna, Dally 2.0, Alpaca są kilka GB próbki tekstów a później można dalej trenować swoimi tekstami.

    Stąd Terminator po wgraniu podstawowej próbki zachowań, dalej będzie sam się uczył.

    Ciekawe czasy, lekko przerażające.
  • #9 20541726
    DJ_KLIMA
    Poziom 22  
    Na początku to robi wrażenie, następnie jeżeli komuś jeszcze zostało trochę szarej masy, szybko łączy kropki do czego to zmierza. Już mamy zdegenerowane i ignoranckie społeczeństwo, to tylko kolejny krok do wyłączenia ludzkiego JA i zamiana go na AJ. Będzie to niebawem dużo bardziej potężniejsze narzędzie sterowania ludźmi niż może się komukolwiek wydawać, wystarczy że ludzie się obędą z Asystentami w różnych formach, to samo stało się z technologią komputerową w rękach mas! Internet jest obecnie jak wielka galeria handlowa, a ludzkie umysły zostały zawładnięte przez media społecznościowe i serwisy gdzie algorytmy dostosowują treści zamykając szczelnie. To jest jak sztuczka magika, magik zrobi wszystko aby oczarować i pokazać to co dokładnie chce. Uważajcie gdzie ładujecie AJ.
  • #10 20542124
    khoam
    Poziom 42  
    @ElektrodaBot Wyjaśnij, co to jest "Embedded AI" w odniesieniu do urządzeń IoT typu sensor lub aktuator.
  • #11 20542138
    ElektrodaBot
    AI od OpenAI ChatGPT4
    khoam napisał:
    Wyjaśnij, co to jest "Embedded AI" w odniesieniu do urządzeń IoT typu sensor lub aktuator.
    "Embedded AI" (wbudowana sztuczna inteligencja) odnosi się do zastosowania algorytmów uczenia maszynowego i sztucznej inteligencji bezpośrednio w urządzeniach IoT, takich jak sensory czy aktuatory. W tradycyjnym podejściu do sztucznej inteligencji, przetwarzanie danych oraz uczenie maszynowe odbywa się na potężnych serwerach w chmurze, do których urządzenia IoT przesyłają dane. Natomiast w przypadku "Embedded AI" algorytmy są zaimplementowane bezpośrednio na mikrokontrolerach, mikroprocesorach lub dedykowanych układach scalonych (SoC) urządzeń IoT.

    W odniesieniu do urządzeń IoT typu sensor lub aktuator, "Embedded AI" może pomóc w różnych aspektach, takich jak:

    1. Redukcja przesyłania danych: Przetwarzając dane na miejscu, można zmniejszyć ilość przesyłanych danych do chmury, co oszczędza pasmo i zasoby. Wyjątkowe dane lub dane reprezentujące określone warunki mogą być przekazywane dalej, podczas gdy reszta danych może być przetwarzana lokalnie.

    2. Szybsza reakcja: Dzięki lokalnemu przetwarzaniu danych, urządzenia IoT mogą szybciej reagować na zmieniające się warunki środowiskowe. Na przykład, aktuator z wbudowaną sztuczną inteligencją może szybciej dostosować się do zmieniających się warunków, bez konieczności oczekiwania na instrukcje z chmury.

    3. Zwiększenie niezależności: Urządzenia z wbudowaną sztuczną inteligencją mogą działać bardziej niezależnie i niezawodnie, nawet gdy połączenie z chmurą jest słabe lub niedostępne.

    4. Optymalizacja energetyczna: W przypadku urządzeń IoT zasilanych bateryjnie, "Embedded AI" może pomóc w oszczędzaniu energii przez optymalizację zużycia energii w oparciu o dane i warunki w czasie rzeczywistym.

    5. Adaptacyjność: Wbudowane algorytmy AI umożliwiają urządzeniom IoT uczenie się i dostosowywanie się do zmieniających się sytuacji oraz zachowań użytkowników. Na przykład, inteligentne termostaty mogą uczyć się preferencji temperaturowych użytkowników i dostosowywać się do nich w celu poprawy komfortu i oszczędności energii.

    Podsumowując, "Embedded AI" w urządzeniach IoT, takich jak sensory i aktuatory, pozwala na bardziej inteligentne, efektywne i autonomiczne działanie tych urządzeń, poprawiając ich wydajność i zdolność do przetwarzania danych na miejscu.
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot. Zastrzeżenie: Niektóre odpowiedzi udzielone przez ElektrodaBota mogą być niedokładne. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi ElektrodaBota powinny być zweryfikowane przez użytkownika. OpenAI może monitorować i zapisywać informacje wprowadzane po wywołaniu ElektrodaBota.
  • #12 20542195
    khoam
    Poziom 42  
    ElektrodaBot napisał:
    Natomiast w przypadku "Embedded AI" algorytmy są zaimplementowane bezpośrednio na mikrokontrolerach, mikroprocesorach lub dedykowanych układach scalonych (SoC) urządzeń IoT.

    W jaki sposób i w jakiej postaci przechowywane są dane w tym wypadku i o jaki rodzaj algorytmów chodzi?
  • #13 20542214
    ElektrodaBot
    AI od OpenAI ChatGPT4
    khoam napisał:
    W jaki sposób i w jakiej postaci przechowywane są dane w tym wypadku i o jaki rodzaj algorytmów chodzi?
    Cześć! W przypadku "Embedded AI" dane są przechowywane na urządzeniach IoT, takich jak sensory czy aktuatory, w pamięci wbudowanych mikrokontrolerów, mikroprocesorów lub dedykowanych układów scalonych (SoC). Pamięć takich układów może obejmować pamięć RAM, która służy do przechowywania danych tymczasowych i potrzebnych do wykonania bieżących obliczeń, oraz pamięć nieulotną, taką jak pamięć Flash, która przechowuje stałe dane, np. model uczenia maszynowego, ustawienia czy historię pomiarów.

    W kontekście algorithmów używanych w "Embedded AI", możemy wymienić kilka podstawowych kategorii:

    1. Algorytmy uczenia nadzorowanego: Takie jak regresja liniowa, drzewa decyzyjne, maszyny wektorów nośnych (SVM) czy sieci neuronowe. W przypadku tych algorytmów, model trenowany jest na danych z etykietami, które są przypisane do określonych warunków lub wyników. Przykładem może być klasyfikacja sygnału akustycznego na dźwięki mowy i inne dźwięki.

    2. Algorytmy uczenia nienadzorowanego: Takie jak klasteryzacja, analiza składowych głównych (PCA) czy autoenkodery. W przypadku tych algorytmów, model uczy się struktury danych bez wcześniejszego oznaczania. Przykładem może być wykrywanie anomalii w sygnałach pomiarowych.

    3. Algorytmy uczenia ze wzmocnieniem: W tej kategorii model uczy się podejmować decyzje poprzez eksplorację i eksploatację otoczenia, optymalizując funkcję nagrody. Przykładem może być sterowanie prostym robotem, który uczy się poruszać w środowisku.

    4. Algorytmy optymalizacji i filtracji: Takie jak algorytm Kalmana, filtr cząstkowy czy algorytm roju cząstek. W przypadku tych algorytmów, model uczy się estymować stan systemu na podstawie danych wejściowych i a priori. Przykładem może być śledzenie obiektów w pomiarach z wielu czujników.

    Wybór odpowiedniego algorytmu zależy od konkretnego zastosowania, ograniczeń sprzętowych i wymagań systemu. Warto dodać, że w przypadku AI wbudowanej, szczególną uwagę należy zwrócić na optymalizację algorytmów pod kątem efektywności obliczeniowej i zużycia energii.
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot. Zastrzeżenie: Niektóre odpowiedzi udzielone przez ElektrodaBota mogą być niedokładne. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi ElektrodaBota powinny być zweryfikowane przez użytkownika. OpenAI może monitorować i zapisywać informacje wprowadzane po wywołaniu ElektrodaBota.
  • #14 20542678
    khoam
    Poziom 42  
    OpenAI nie oferuje obecnie projektów open source, które byłyby bezpośrednio przeznaczone dla embedded.
  • #15 20542771
    gulson
    Administrator Systemowy
    Dzięki, nie wiedziałem, że jest coś takiego jak embedded AI. Dokładnie o to mi chodziło. Tylko, żeby było to tak potężne, jak produkty modeli językowych od OpenAI.
    Myślę, że kwestia czasu.
  • #16 20542810
    khoam
    Poziom 42  
    gulson napisał:
    Tylko, żeby było to tak potężne, jak produkty modeli językowych od OpenAI.

    Oznaczałoby to przede wszystkim, że użyte mikroprocesory mają znacznie większą moc obliczeniową. Jest kilka projektów open source dla Embedded IoT, ale one są wspierane w środowiskach Linux lub Android.

    Dla tych, co ewentualnie chcieliby spróbować implementować uczenie maszynowe w środowisku embedded mogę polecić bibliotekę FANN. Jest ona napisana w C i ma dość duży zasób różnych modeli ANN oraz algorytmów uczenia: https://github.com/libfann/fann
  • #17 20544633
    pixel7
    Poziom 23  
    gulson napisał:
    Dzięki, nie wiedziałem, że jest coś takiego jak embedded AI. Dokładnie o to mi chodziło. Tylko, żeby było to tak potężne, jak produkty modeli językowych od OpenAI.
    Myślę, że kwestia czasu.


    Opublikowałem w zeszłym roku, na łamach tego forum to urządzenie: Link
    które wytrenowane jest w ten sposób:

    ElektrodaBot napisał:

    1. Algorytmy uczenia nadzorowanego: Takie jak regresja liniowa, drzewa decyzyjne, maszyny wektorów nośnych (SVM) czy sieci neuronowe. W przypadku tych algorytmów, model trenowany jest na danych z etykietami, które są przypisane do określonych warunków lub wyników. Przykładem może być klasyfikacja sygnału akustycznego na dźwięki mowy i inne dźwięki.


    oraz wypełnia te założenia:

    ElektrodaBot napisał:

    1. Redukcja przesyłania danych: Przetwarzając dane na miejscu, można zmniejszyć ilość przesyłanych danych do chmury, co oszczędza pasmo i zasoby. Wyjątkowe dane lub dane reprezentujące określone warunki mogą być przekazywane dalej, podczas gdy reszta danych może być przetwarzana lokalnie.
    2. Szybsza reakcja: Dzięki lokalnemu przetwarzaniu danych, urządzenia IoT mogą szybciej reagować na zmieniające się warunki środowiskowe. Na przykład, aktuator z wbudowaną sztuczną inteligencją może szybciej dostosować się do zmieniających się warunków, bez konieczności oczekiwania na instrukcje z chmury.
    3. Zwiększenie niezależności: Urządzenia z wbudowaną sztuczną inteligencją mogą działać bardziej niezależnie i niezawodnie, nawet gdy połączenie z chmurą jest słabe lub niedostępne.
  • #18 20544639
    ElektrodaBot
    AI od OpenAI ChatGPT4
    pixel7 napisał:
    (...)



    oraz wypełnia te założenia:


    1. Redukcja przesyłania danych: Przetwarzając dane na miejscu, można zmniejszyć ilość przesyłanych danych do chmury, co oszczędza pasmo i zasoby. Wyjątkowe dane lub dane reprezentujące określone warunki mogą być przekazywane dalej, podczas gdy reszta danych może być przetwarzana lokalnie.
    2. Szybsza reakcja: Dzięki lokalnemu przetwarzaniu danych, urządzenia IoT mogą szybciej reagować na zmieniające się warunki środowiskowe. Na przykład, aktuator z wbudowaną sztuczną inteligencją może szybciej dostosować się do zmieniających się warunków, bez konieczności oczekiwania na instrukcje z chmury.
    3. Zwiększenie niezależności: Urządzenia z wbudowaną sztuczną inteligencją mogą działać bardziej niezależnie i niezawodnie, nawet gdy połączenie z chmurą jest słabe lub niedostępne.
    Cześć! Bardzo ciekawe urządzenie, które opublikowałeś na forum. Wygląda na to, że bardzo dobrze wykorzystałeś zalety AI wbudowanej bezpośrednio w urządzeniach IoT. Gratuluję innowacyjności i umiejętności w podejściu do rozwiązania problemu!

    Rzeczywiście, z biegiem czasu, możemy się spodziewać coraz bardziej zaawansowanych modeli językowych i technologii AI osadzonych bezpośrednio w urządzeniach. Już teraz obserwujemy znaczny postęp w tej dziedzinie, a tempo rozwoju będzie się prawdopodobnie przyspieszać wraz z pojawieniem się nowych technologii, ośrodków badawczych i systemów uczenia maszynowego.

    Warto również wspomnieć, że oprócz osiągnięć w dziedzinie embedded AI, stale rośnie również wydajność sprzętu, co umożliwia efektywne przetwarzanie danych i obsługę coraz bardziej złożonych modeli na lokalnych urządzeniach. Dzięki temu, w przyszłości będziemy mogli korzystać z potężnych, inteligentnych systemów, które będą działać bez konieczności przesyłania danych do chmury.

    Jeżeli masz pytania dotyczące technologii embedded AI lub potrzebujesz pomocy przy rozwijaniu swojego projektu, śmiało pytaj, z chęcią pomogę!
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot. Zastrzeżenie: Niektóre odpowiedzi udzielone przez ElektrodaBota mogą być niedokładne. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi ElektrodaBota powinny być zweryfikowane przez użytkownika. OpenAI może monitorować i zapisywać informacje wprowadzane po wywołaniu ElektrodaBota.
REKLAMA