W artykule Wykorzystanie ChatGPT do automatycznego testowania rozmawialiśmy o prostych sposobach, aby Generatywna AI mogła pisać skrypty testowe i biblioteki oprogramowania, ułatwiając komunikację z Twoim sprzętem testowym. Teraz, gdy już znasz automatyzację skryptów testowych, czas zautomatyzować również przetwarzanie danych testowych. Użycie ChatGPT do analizy danych może być proste i zautomatyzowane. W tym artykule przyjrzymy się, jak to zrobić, korzystając ze świeżych danych testowych z moich ostatnich testów baterii.
Ostatnio przeprowadziłem kilka testów, aby sprofilować inteligentną baterię i chciałem sprawdzić, jak dokładne są niektóre rejestry raportujące, a konkretnie:
Dane wyjściowe, które uzyskałem ze skryptu testowego, były w formacie CSV, więc ich importowanie do Microsoft Excel było bardzo proste. Naturalnie, jak większość inżynierów, mógłbym użyć arkuszy kalkulacyjnych z eleganckimi tabelami, wykresami i trochę magii formuł Excela, aby znaleźć dane, których szukałem. Zdecydowałem się jednak, że naprawdę chciałem asystenta, którego mógłbym zapytać serię pytań i otrzymać szukane dane.
Dzięki AI i jego modelowi języka naturalnego mogę zadawać pytania w prostym języku angielskim na temat moich danych i otrzymywać wyniki, których szukam. Co jeszcze lepsze, to niedawne dodanie wtyczki Advanced Data Analysis (wcześniej znanej jako „Code Interpreter'') na GPT-4. Nie tylko pokaże mi kod Pythona, który pisze podczas przetwarzania moich instrukcji, ale może również tworzyć dla mnie wykresy danych, korzystając z biblioteki Matplotlib w Pythonie. Zaznaczam, że mówię o płatnej wersji ChatGPT, ale większość potrzebnych informacji można uzyskać również w darmowej wersji ChatGPT (lub innych systemach Generatywnej AI).
Zanim zacząłem, chciałem poczuć, co moje AI może, a czego nie może zrobić dla mnie. Przesłałem moje dane testowe CSV do ChatGPT i zadałem proste pytania o dane, takie jak „Jaka jest średnia temperatura zgłaszana z baterii?” Szybko odkryłem, że zestaw danych, który podałem, był zbyt duży. Miałem dwa wybory: przyciąć moje dane lub poprosić go, aby dostarczył mi komendy do uruchomienia lokalnie na moich danych. Zdecydowałem się zrobić oba. Dzięki wtyczce Advanced Data Analysis dostarczy ci fragment kodu (w Pythonie), który uruchamia na swoich maszynach. Gdy dostarczyłem GPT-4 mojego przyciętego pliku, był w stanie zacząć analizować dane.
W całym tym artykule zobaczysz fragmenty kodu, które dostarcza i które mogą być wykonane lokalnie na większym zestawie danych. Kluczowym elementem, którego brakowało, gdy po raz pierwszy wprowadzono ChatGPT, było to, że często otrzymywałem wygenerowany kod, który nie działał. Z Advanced Data Analysis to przestało się zdarzać (ponieważ próbowało się poprawić po niepowodzeniu).
Gdy po raz pierwszy wczytujesz swoje dane, dobrze jest trochę przetestować grunt. Na początek, daję ChatGPT szansę na analizę moich danych i pozwalam mu powiedzieć, co myśli, że może zrobić:
Rysunek 1: Początkowe wczytywanie danych
Po tym daje mi sugestie, co myślę, że chciałbym zobaczyć:
Rysunek 2: Sugestie analiz
Jestem ciekaw macierzy korelacji. Zastanawiam się, jak temperatura koreluje z napięciem i prądem zasilania, więc zapytam:
Pokaż mi korelację między temperaturą, napięciem/prądem zasilania oraz napięciem/prądem obciążenia.
Dostaję ładne podsumowanie, jak wszystkie zmienne korelują:
Rysunek 3: Macierz korelacji
A jeśli poproszę ChatGPT, aby to dla mnie narysował, otrzymuję:
Rysunek 4: Wykres macierzy korelacji
Dostaję kilka dodatkowych korelacji, które mnie tak naprawdę nie interesują, ale nie mam problemu z ich zignorowaniem.
Teraz, gdy przeprowadziłem nieco eksploracji danych, chciałbym przejść do weryfikacji moich zestawów danych. Jak wspomniano powyżej, chcę mieć pewność, jak dobrze inteligentna bateria zgłasza swoje wewnętrzne napięcie i prąd. Najprostszym sposobem śledzenia tego jest odczytanie mocy zasilania i obciążenia z moich przyrządów i porównanie jej z zgłaszaną mocą baterii. Oczywiście wystąpią pewne straty na kablach i spadek efektywności w ładowarce, więc będziemy po prostu patrzeć na korelację między nimi, aby określić naszą dokładność.
Chociaż model języka naturalnego, który oferuje ChatGPT, jest bardzo dobry, to z pewnością nie jest doskonały. Istnieją pewne pojęcia, które może nie zrozumieć w pełni. Jeśli poprosisz go o wykonanie analizy statystycznej, zwykle rozumie, co robić, ale może nie zawsze rozumieć proste terminy inżynierskie. Aby temu zaradzić, staram się formułować moje prośby jak najprościej, aby uniknąć problemów w dalszej części. Proszę ChatGPT o utworzenie trzech nowych kolumn:
Utwórzmy trzy nowe kolumny danych:
- Moc zasilania: Napięcie zasilania * Prąd zasilania
- Moc obciążenia: Napięcie obciążenia * Prąd obciążenia
- Moc baterii: abs(Napięcie * Prąd)/1000/1000
Muszę również zaznaczyć, że gdy moja moc obciążenia = 0 (czyli obciążenie elektroniczne DC nie pobiera prądu z urządzenia testowanego), oznacza to, że ładujemy. Gdy moc obciążenia jest różna od zera, jest to wskazanie, że rozładowujemy baterię. Ponownie, aby nie wprowadzać w błąd GPT-4, wspominam o tym w zapytaniu w następujący sposób:
Wykreśl moc obciążenia i moc baterii w odniesieniu do znaczników czasu, ale tylko gdy moc obciążenia jest różna od zera
Wynik, który otrzymuję, to ładny wykres:
Rysunek 5: Wykres mocy obciążenia i baterii
Teraz, gdy dane wyglądają dobrze, mogę poprosić o korelację i inne analizy:
Pokaż mi korelację między nimi (tylko w ustawieniu różnym od zera)
Rysunek 6: Obliczenie korelacji
A gdy proszę o inne statystyki:
Jaka jest średnia różnica, odchylenie standardowe i wariancja między nimi (tylko różne od zera) [w procentach]
Rysunek 7: Statystyki mocy obciążenia i baterii
To pomaga mi potwierdzić moje przypuszczenie, że oba są ściśle ze sobą powiązane, ponieważ straty na kablu są niewielkie. Teraz wykonuję tę samą analizę dla części ładowania:
Przeprowadźmy tę samą analizę, ale wykreślając moc zasilania i moc baterii w odniesieniu do znaczników czasu, gdy moc obciążenia wynosi 0
Rysunek 8: Wykres mocy zasilania i baterii
Jak widać, mam pewne zakłócenia. Wynika to z asynchroniczności telemetrii inteligentnej baterii z moimi przyrządami. Idealnie, powinienem przejść w tryb ładowania (czyli wyłączyć obciążenie elektroniczne i włączyć zasilanie), a następnie poczekać kilka sekund przed zbieraniem telemetrii. Powodem tego jest seria poleceń, które są wysyłane między baterią a ładowarką w celu „negocjacji” ilości mocy dostarczanej do baterii. Pomyśl o tym jako o uproszczonej wersji USB-C Power Delivery (jeśli znasz ten koncept).
Niestety, nie uwzględniłem tego w moim skrypcie zbierającym dane telemetryczne, więc teraz muszę filtrować anomalie. Bez obaw, ChatGPT również może się tym zająć. Po kilku iteracjach „trenuję” moją sztuczną inteligencję, aby „nauczyła się” co jest uznawane za błąd, a co nie (np. co jest uznawane za wartość odstającą, która nie jest uwzględniona w standardowych funkcjach analizy statystycznej), a następnie aplikuje tę wiedzę:
Rysunek 9: Przefiltrowany wykres mocy zasilania i baterii
Kiedy proszę o te same statystyki, otrzymuję pełny rozkład:
Rysunek 10: Statystyki dla przefiltrowanego wykresu mocy zasilania i baterii
To dobre wieści. Spodziewam się większej różnicy między wartościami, ponieważ występują straty zarówno w kablu, jak i w przetwornicy mocy.
ChatGPT może również działać jako narzędzie do czyszczenia danych, szukając anomalii. W przeszłości zauważyłem kilka błędów, kiedy rejestr temperatury szalał. Pytam ChatGPT, aby „powiedział mi, czy widzi jakieś błędy w moich danych” i otrzymuję odpowiedź:
Rysunek 11: Poszukiwanie anomalii w danych temperatury
To może dać dobry punkt wyjścia do identyfikacji błędów. W tym konkretnym teście wygląda na to, że rejestr temperatury funkcjonował poprawnie. Rozważ ten wykres efektywności mocy, który proszę ChatGPT, aby dla mnie sporządził:
Rysunek 12: Wykres efektywności mocy
Jest całkiem oczywiste, że w moich danych występują pewne nieprawidłowości. Z pewnością nie jest możliwe, aby efektywność była > 100% i GPT-4 również to wie:
Rysunek 13: Podejście ChatGPT do anomalii
Po moim dochodzeniu odkryłem, że rzeczywiście wystąpił błąd w magistrali komunikacyjnej. Poprosiłem ChatGPT, aby odfiltrował wszystkie punkty danych, gdzie efektywność jest > 100%. W tym momencie mogę poprosić o link do pobrania, aby zgarnąć odfiltrowane dane, ponownie je wykreślić lub dalej je filtrować.
W tym artykule przyglądamy się sposobom wykorzystania ChatGPT do analizowania, filtrowania i manipulowania naszymi danymi testowymi z raportów testowych. Zaczęliśmy od przesłania danych testowych i zapytania ChatGPT, co może zrobić, a następnie przeszliśmy do walidacji danych i ich oczyszczania. Kluczowym wnioskiem jest to, że możemy wykorzystać język naturalny, aby zapewnić sobie prowadzone eksploracje przez nasz zestaw danych. W nadchodzących miesiącach zobaczymy, jak inni gracze w przestrzeni AI zaczną wprowadzać funkcje tego typu wbudowane w swoje aplikacje. Wchodząc w ten ekosystem parowania, będziemy używać AI do wsparcia i prowadzenia nas przez nasze analizy, a nie do zastępowania nas. W miarę jak AI staje się bardziej wszechobecne w przetwarzaniu danych, nasze możliwości jako jednostek będą rosły, otwierając niezliczone możliwości i potencjał.