ChatGPT를 사용한 자동화 테스트에서 우리는 생성 AI를 사용하여 테스트 스크립트와 소프트웨어 라이브러리를 작성하는 쉬운 방법에 대해 이야기했습니다. 이를 통해 테스트 장비와의 소통이 간단해졌습니다. 이제 테스트 스크립트를 자동화하는 방법을 익혔으니 테스트 데이터 처리도 자동화할 시간입니다. ChatGPT를 사용한 데이터 분석은 간단하고 효율적일 수 있습니다. 이 글에서는 최근에 진행한 배터리 테스트에서 얻은 신선한 테스트 데이터를 가지고 그 방법을 살펴볼 것입니다.
최근에 스마트 배터리의 프로필을 분석하기 위한 몇 가지 테스트를 진행했고, 특히 다음과 같은 몇 가지 보고 레지스터의 정확성을 확인하고 싶었습니다:
테스트 스크립트에서 얻은 출력 데이터는 CSV 형식이어서 Microsoft Excel로 가져오기가 매우 쉬웠습니다. 대부분의 엔지니어들처럼, 저도 복잡한 표, 차트 및 일부 Excel 수식 마법을 사용하여 찾고자 하는 데이터를 찾을 수 있었습니다. 하지만, 제가 정말 원한 것은 일련의 질문을 할 수 있고 찾고자 하는 데이터를 돌려받을 수 있는 조수였습니다.
AI와 그 자연어 모델을 사용하면 내 데이터에 대해 평범한 영어로 질문을 하고 찾고자 하는 결과를 얻을 수 있습니다. 더 좋은 것은 GPT-4에 추가된 Advanced Data Analysis 플러그인(이전에는 "Code Interpreter"로 알려짐)입니다. 이것은 내가 내린 지시를 처리하면서 작성하는 Python 코드를 보여주는 것뿐만 아니라, Python의 Matplotlib 라이브러리를 사용하여 데이터를 그래프로도 나타낼 수 있습니다. 여기서 언급하는 것은 ChatGPT의 유료 버전이지만, ChatGPT의 무료 버전(또는 다른 생성 AI 시스템)에서도 대부분의 필요한 것을 얻을 수 있습니다.
시작하기 전에 제 AI가 무엇을 할 수 있고 할 수 없는지에 대한 느낌을 얻고 싶었습니다. CSV 테스트 데이터를 ChatGPT에 업로드하고 데이터에 대해 간단한 질문을 했습니다. 예를 들어 "배터리에서 보고된 평균 온도는 무엇인가요?"라고 물었습니다. 제가 준 데이터셋이 너무 컸다는 것을 매우 빨리 알게 되었습니다. 데이터를 줄이거나 데이터에 대해 로컬에서 실행할 명령을 제공하도록 요청하는 두 가지 선택이 있었습니다. 저는 둘 다를 결정했습니다. Advanced Data Analysis 플러그인을 사용하면 그들의 기계에서 실행하는 코드 스니펫(파이썬으로)을 제공합니다. 제가 GPT-4에 축소된 파일을 제공하자 데이터 분석을 시작할 수 있었습니다.
이 글을 통해 더 큰 데이터 세트에 대해 로컬에서 실행할 수 있는 코드 스니펫을 제공하는 것을 볼 수 있습니다. GPT-4가 먼저 코드를 실행하는 것은 ChatGPT가 처음 출시되었을 때 누락된 핵심 구성 요소였습니다. 자주, 작동하지 않는 생성된 코드를 받곤 했습니다. Advanced Data Analysis를 사용하면 실패 후에 스스로를 수정하려고 시도하기 때문에 그런 일이 발생하지 않게 되었습니다.
데이터를 처음 로드할 때는 조금씩 테스트해 보는 것이 좋습니다. 시작으로, 저는 ChatGPT에게 제 데이터를 분석하게 하고 어떤 작업을 할 수 있을지 알려달라고 합니다:
그림 1: 초기 데이터 로딩
그 후에 제가 보고 싶어할 것 같은 제안들을 해줍니다:
그림 2: 분석 제안들
저는 상관관계 행렬에 대해 궁금합니다. 온도가 전압과 전류와 어떻게 상관되는지 알고 싶어서 물어봅니다:
온도, 공급 전압/전류, 부하 전압/전류 간의 상관관계를 보여주세요.
모든 변수들이 어떻게 상관되는지에 대한 좋은 분석을 제공합니다:
그림 3: 상관관계 행렬
그리고 제가 ChatGPT에게 그것을 플롯하도록 요청하면 다음과 같은 결과를 얻습니다:
그림 4: 상관관계 행렬 플롯
제가 별로 관심 없는 몇 가지 추가 상관관계를 제공하지만, 무시하기로 합니다.
이제 일부 데이터 탐색을 수행했으므로 데이터 세트를 검증하려고 합니다. 위에서 언급했듯이, 스마트 배터리가 내부 전압과 전류를 얼마나 잘 보고하는지 알고 싶습니다. 이를 추적하는 가장 간단한 방법은 공급 및 부하 전력을 내 계측기에서 읽고 보고된 배터리 전력과 비교하는 것입니다. 물론 케이블을 통한 일부 손실과 충전기의 효율 저하가 있을 것이므로 두 가지를 상관시켜 정확도를 결정하기만 하면 됩니다.
ChatGPT가 제공하는 자연어 모델은 매우 좋지만, 완벽하지는 않습니다. 완전히 이해하지 못할 수 있는 특정 개념들이 있습니다. 통계 분석을 수행하도록 요청하면 대체로 무엇을 해야 할지 이해하지만, 간단한 엔지니어링 용어는 항상 이해하지 못할 수 있습니다. 이를 고려하여 하류에서 문제가 발생하지 않도록 요청을 가능한 한 간단하게 만듭니다. 저는 ChatGPT에게 세 개의 새로운 열을 만들도록 요청합니다:
세 개의 새로운 데이터 열을 만듭시다:
- 공급 전력: 공급 전압 * 공급 전류
- 부하 전력: 부하 전압 * 부하 전류
- 배터리 전력: abs(전압 * 전류)/1000/1000
부하 전력이 0인 경우(즉, DC 전자 부하가 테스트 중인 장치로부터 전류를 끌어오지 않는 경우) 충전 중임을 나타내야 한다는 점을 지적해야 합니다. 부하 전력이 0이 아닌 경우 배터리가 방전되고 있음을 나타냅니다. 혼동을 피하기 위해 GPT-4에게 이렇게 요청합니다:
부하 전력이 0이 아닐 때만 타임스탬프에 대해 부하 전력과 배터리 전력을 플롯하세요
결과는 아름다운 플롯입니다:
그림 5: 부하 및 배터리 전력의 플롯
이제 데이터가 좋아 보이므로 상관 관계와 다른 분석을 요청할 수 있습니다:
두 개 사이의 상관 관계를 보여주세요(0이 아닌 설정에서만)
그림 6: 상관 계산
그리고 다른 통계를 요청할 때:
두 개 사이의 평균 차이, 표준 편차, 분산은 무엇입니까? (0이 아닌 경우에만) [백분율로]
그림 7: 부하 및 배터리 전력에 대한 통계
이것은 두 가지가 케이블 손실이 거의 없기 때문에 밀접하게 연결되어 있음을 확인하는 데 도움이 됩니다. 이제 충전 부분에 대해 같은 분석을 수행합니다:
부하 전력이 0일 때 공급 전력과 배터리 전력을 타임스탬프에 대해 플롯하는 같은 분석을 수행합시다
그림 8: 공급 및 배터리 전력의 플롯
보시다시피 몇 가지 글리치가 있습니다. 이는 스마트 배터리 텔레메트리가 내 계측기와 동기화되지 않기 때문입니다. 이상적으로는 전자 부하를 끄고 전원 공급 장치를 켠 다음 텔레메트리를 수집하기 전에 몇 초 더 기다려야 합니다. 이유는 배터리와 충전기 사이에 배터리에 전달할 전력량을 "협상"하기 위해 일련의 명령이 전송되기 때문입니다. 이것을 USB-C 전력 전달의 단순화된 버전으로 생각하십시오(개념에 익숙하다면).
불행히도 저는 제 텔레메트리 수집 스크립트에 그 기능을 포함시키지 않아 이제 필터링해야 할 이상 현상들이 생겼습니다. 걱정마세요, ChatGPT도 그 일을 할 수 있습니다. 몇 번의 반복 후에 저는 제 AI를 “학습”시켜 표준 통계 분석 함수에서 고려되지 않는 이상치가 무엇인지 (예: 글리치로 간주되는 것과 그렇지 않은 것)를 “알게” 하고, 그런 다음 그 지식을 적용합니다:
그림 9: 공급 및 배터리 전력의 필터링된 플롯
같은 통계를 요청하면 전체 분석을 받게 됩니다:
그림 10: 공급 및 배터리 전력의 필터링된 플롯에 대한 통계
이것은 좋은 소식입니다. 케이블과 전력 변환기 모두에서 손실이 있기 때문에 값 사이에 더 큰 차이가 있을 것으로 기대합니다.
ChatGPT는 이상 현상을 찾아내는 것으로 데이터를 정제하는 역할도 할 수 있습니다. 과거에 온도 레지스터가 조금 이상하게 작동하는 글리치를 몇 번 보았습니다. 저는 ChatGPT에게 “내 데이터에서 글리치를 보면 알려줘”라고 요청하고, 그것은 다음과 같이 반환합니다:
그림 11: 온도 데이터에서 이상 현상 찾기
이것은 글리치를 식별하는 좋은 출발점을 제공할 수 있습니다. 이 특정 테스트에서는 온도 레지스터가 정확하게 기능하는 것처럼 보입니다. 저는 ChatGPT에게 이 전력 효율 그래프를 그려달라고 요청했습니다:
그림 12: 전력 효율 그리기
내 데이터에 몇 가지 비정상이 있음이 분명합니다. 효율이 100%를 초과하는 것은 분명히 불가능하며 GPT-4도 이를 알고 있습니다:
그림 13: ChatGPT의 이상 현상에 대한 견해
제가 조사한 결과, 실제로 통신 버스 전반에 걸쳐 오류가 있었음을 발견했습니다. 저는 ChatGPT에게 효율성이 100%를 초과하는 모든 데이터 포인트를 필터링해 달라고 요청합니다. 이 시점에서 필터링된 데이터를 다운로드 링크로 받거나, 다시 플롯하거나, 더 필터링할 수 있습니다.
이 글에서는 테스트 보고서에서 우리의 테스트 데이터를 분석하고, 필터링하며, 조작하는 방법을 ChatGPT를 활용하여 살펴봅니다. 우리는 테스트 데이터를 업로드하고 ChatGPT에게 무엇을 할 수 있는지 물어보면서 시작했고, 그 다음으로 데이터 검증과 정제로 넘어갔습니다. 여기서 핵심적인 교훈은 우리가 자연어를 사용하여 데이터 세트를 통한 안내된 탐색을 제공할 수 있다는 것입니다. 앞으로 몇 달 안에 AI 분야의 다른 플레이어들이 이러한 기능을 자신들의 애플리케이션에 내장하여 제공하기 시작할 것입니다. 우리가 이러한 생태계로 이동함에 따라, 우리는 AI를 분석을 통해 우리를 지원하고 안내하는 데 사용할 것이며, 우리를 대체하지는 않을 것입니다. 데이터 처리에서 AI가 더욱 만연해짐에 따라, 우리 개인의 능력은 성장할 것이며, 무수한 가능성과 잠재력을 해제할 것입니다.