eBook

챕터 2

AI를 사용한 임베디드 알고리즘의 설계와 배포


종래의 알고리즘 개발 접근법에서는 입력값을 처리해서 원하는 출력값을 산출하는 프로그램을 작성하게 됩니다. 하지만 제1원리로부터 도출하기에는 방정식이 너무 복잡하거나, 배포하기에는 너무 계산 집약적이거나, 원하는 측정이 불가능하거나, 물리적으로 만들기에는 너무 많은 비용이 드는 경우가 있을 수 있습니다.

그러한 경우에는 AI 모델을 만드는 것을 고려할 수 있습니다. 임베디드 AI 알고리즘은 다음과 같은 응용 분야를 지원할 수 있습니다.

  • 제어 시스템
  • 예측 정비
  • ADAS (첨단 운전자 보조 시스템)
  • 경로 계획
  • 자연어 처리
  • 신호 처리
  • 가상 센서
  • 객체 검출
섹션

AI 가상 센서 생성: 배터리 충전 상태 추정 예제

오늘날 리튬이온 배터리는 웨어러블 전자제품, 휴대폰, 랩탑부터 전기차나 스마트 그리드에 이르기까지 널리 사용되고 있습니다. BMS(배터리 관리 시스템)는 안전하고 효율적인 배터리 구동을 보장합니다. BMS에서의 핵심 작업은 SoC(충전 상태)를 추정하는 것입니다.

다양한 이유로 인해, SoC를 직접 측정하는 센서를 만들어 설치하기는 물리적으로 불가능합니다. 이는 배터리뿐 아니라 다양한 산업의 많은 시스템에서도 만연한 문제입니다.

많은 응용 분야에 사용되고 있는 센서들은 다음과 같은 단점이 있을 수 있습니다.

  • 부정확함
  • 고가임
  • 느림
  • 소음이 심함
  • 연약함
  • 신뢰성이 낮음
  • 물리적으로 불가능함

이런 물리적 센서 대신에 가상 센서를 만들 수 있습니다.

엔진에서 수집한 데이터와 AI 기반 가상 센서에서 나온 출력값이 유사함을 보여주는 그래프.

실제 엔진에서 나온 배출량과 NOX 배출량을 추정하는 AI 가상 센서 출력값의 비교. (이미지 출처: Renault)

EKF(확장 칼만 필터)를 사용하여 SoC를 추정하는 방법이 꽤 괜찮은 선택으로 보일 수 있습니다. EKF는 매우 정확할 수 있지만 배터리를 나타내는 비선형 수학 모델이 있어야 하며, 그러한 비선형 수학 모델이 항상 있거나 쉽게 만들 수 있지는 않습니다. 칼만 필터 역시 계산 집약적일 수 있고, 초기 상태가 틀리거나 모델이 정확하지 않으면 부정확한 결과가 산출될 수 있습니다.

이에 대한 대안은 AI를 사용하여 가상 센서를 만드는 것입니다. AI는 칼만 필터에 비해 더욱 잘 일반화할 수 있고, 올바른 데이터로 훈련시키면 정확한 결과를 제공할 수 있습니다.

SoC(충전 상태)의 AI 모델은 전압, 전류, 온도를 입력값으로 받아서 추정된 충전 수준을 출력합니다.

AI 기반 가상 센서를 만들기 위해서는 AI 모델을 훈련시킬 데이터가 필요할 것입니다. 실험실의 잘 통제된 환경에서 배터리 측정값을 수집하여, 전류를 적분해서 SoC 값을 정확히 계산할 수 있습니다(전하 집적법).

이 방법도 간단하고 계산도 많이 필요하지 않습니다. 그럼 왜 이를 BMS에 사용해 SoC를 추정하지 않을까요? 하지만 이 방법은 전류를 정확히 측정할 수 있는 실험실 환경에서 수행하지 않으면 오차가 발생하기 쉽기 때문에 SoC를 추정하기 위해 BMS에서 사용하기에는 좋은 선택이 아닙니다. 그러나 이 방법은 견고한 가상 센서를 만드는 데 필요한 데이터를 얻으려면 효과적인 방법입니다.

정밀하게 획득한 입출력 데이터를 수집했다면 그 데이터셋을 사용하여 배터리 관리 시스템의 일부로서 배포할 수 있는 AI 기반 가상 센서 모델을 훈련시킬 수 있습니다.

AI 모델을 만들고 Simulink에 통합하는 방법에는 세 가지가 있습니다.

1. MATLAB의 머신러닝 프레임워크 안에서 훈련시키기

2. TensorFlow나 PyTorch로부터 모델 가져오기

3. MATLAB의 딥러닝 프레임워크 안에서 훈련시키기

AI 모델은 측정된 데이터를 사용해 직접 훈련된다는 장점이 있습니다. 훈련 데이터는 전류, 전압, 온도, 전류와 온도의 이동평균 같은 입력값과 충전 상태의 복잡한 관계를 포착하고 이러한 정보를 모델에 담습니다.

결과적으로, 제1원리에 기반한 수학 모델에 비해 AI 모델이 더 빠르면서도 정확할 수 있습니다.

고품질의 훈련 데이터셋을 만드는 데 투자했다면 MATLAB® 또는 기타 툴로 다양한 머신러닝이나 딥러닝 기법을 사용해 AI 모델을 만들 수 있습니다. 이런 모델을 Simulink에 통합하고 나란히 놓고 평가하여 어떤 모델의 성능이 가장 우수한지 알아낼 수 있습니다.

데이터 획득 관련 참고사항

양호한 훈련 데이터를 수집하기는 매우 어렵습니다. AI 분야에서는 공개된 데이터셋으로 인해 AI 연구가 향상되었습니다. 동일한 데이터셋을 사용하여 연구자들은 다양한 AI 기법들을 손쉽게 비교하고 벤치마킹을 수행할 수 있습니다. 공유된 데이터셋과 모델은 재현성을 촉진하고 AI에 대한 신뢰를 고취할 수 있습니다.

그렇지만 산업계의 데이터는 종종 면밀하게 선정된 데이터셋에서 나오고, 가끔은 특화된 실제 테스트 베드나 제1원리에 기반한 복잡한 고충실도 시뮬레이션으로부터 생성되기도 합니다. 이런 실험은 많은 비용과 시간이 소모될 수 있지만 그렇게 해서 AI 모델을 잘 훈련시킨다면 그만한 가치가 있습니다. 분야별 전문 지식을 보유한 엔지니어들은 고품질의 훈련 데이터를 생성하는 실험을 설계함으로써 AI 모델 생성에 있어 더욱 가치를 부여할 수 있습니다.

섹션

AI 기반 가상 센서의 시뮬레이션 및 테스트

AI 모델을 훈련시킨 다음에는 Simulink에 모델을 통합하고 테스트할 수 있습니다. Simulink를 사용하면 어떤 AI 모델의 성능이 가장 우수한지 살펴보고 AI를 기반으로 하지 않는 EKF 접근법 등의 대안에 비해 성능이 우수한지 파악할 수 있습니다. 앞에서 언급한 대로, 칼만 필터에는 내부 배터리 모델이 있어야 하지만 그러한 모델은 존재하지 않을 수도 있습니다.

이 예제에는 EKF 외에도 3개의 AI 모델이 포함되어 있습니다. 이 AI 모델들은 모두 동일한 데이터로 훈련했지만 다른 AI 접근법을 사용했습니다.

  • 조밀한 회귀 트리: 입력 데이터를 해석하는 데 사용되는 구체적인 지표 값들로 이루어진 트리를 구축하는 머신러닝 접근법입니다. 조밀한 회귀 트리에는 매우 유연한 응답 함수를 나타내는 작은 리프가 많이 있습니다.
  • DL-FFN(피드포워드 신경망): 입력값을 군집화하거나 분류하는 상호연결된 노드를 사용하여 학습하는 적응형 딥러닝 시스템입니다. 추론 과정에서 정보는 신경망을 거쳐 앞으로 이동하고, 뒤로는 절대 이동하지 않습니다.
  • DL-LSTM(장단기 기억 신경망): 신경망을 통과하는 피드백을 사용하는 상호연결된 노드들을 사용하여, 단일한 입력값뿐만 아니라 상호연계된 입력값의 시퀀스를 처리하는 적응형 딥러닝 시스템입니다.
 동일한 입력값을 받아서 비교를 위해 다양한 출력값을 생성하는 4개의 블록이 나타나 있는 Simulink 스크린샷.

EKF, ML, DL-FFN, DL-LSTM 등 네 가지 가상 센서 모델을 Simulink에 통합하여 성능을 비교할 수 있습니다. 이 모델들은 전압, 전류, 온도를 받아서 배터리의 충전 상태를 추정합니다.

모델들을 평가하려면 Simulink에서 나란히 동시 비교를 실행할 수 있습니다. 정확도를 시각화하고 측정하며 모델들의 출력값을 검증 데이터셋에 피팅합니다. 이 정보를 사용하면 시스템 하드웨어에 배포하기 전에 모델이 정확도 요구사항을 충족하는지 파악할 수 있습니다.

네 가지 가상 센서 모델들의 출력값 그래프가 표시되어 있는 Simulink 스크린샷. 선들이 겹쳐 있지만 EKF 모델의 출력값 선은 가장 크게 벗어나 있습니다. ML 출력값 선도 다른 선으로부터 벗어나 있습니다.

Simulink를 사용하여 네 가지 가상 센서 모델의 출력을 하나의 그래프에 표시하여 정확도 차이를 이해할 수 있습니다.

다른 알고리즘들과 AI 모델을 시스템 수준 시뮬레이션에 함께 사용할 수도 있습니다. 예를 들어, 엔진이나 트랜스미션 등 다른 서브시스템과 함께 작동하는 BMS 서브시스템이 포함된 전체 시스템 시뮬레이션의 일부로서 AI 모델을 실행할 수 있습니다. 모델 및 기타 통합된 구성요소들을 테스트하고 정교화하여 상호운용이 가능하게 하고 시스템 수준 요구사항을 통과하도록 할 수도 있습니다.

상태 머신, SoC 추정, 밸런싱 로직 등 3개의 블록을 상호연결하는 입력값과 출력값이 나타나 있는 Simulink의 배터리 관리 시스템의 회로도.

Statistics and Machine Learning Toolbox™ 및 Deep Learning Toolbox 블록 라이브러리를 사용하여 시스템 수준 테스트를 위해 SoC_Estimation 블록의 AI 모델들을 Simulink에 가져올 수 있습니다.

섹션

임베디드 AI 모델 배포

다음 단계는 최종적으로 배포할 하드웨어에서 AI 모델을 테스트하는 것입니다. 이 단계에서는 모델 성능을 실질적으로 평가할 수 있습니다.

MATLAB 및 Simulink 코드 생성 툴을 사용하여, 딥러닝 신경망 또는 머신러닝 모델에 사용할 C/C++ 코드를 라이브러리 없이 생성할 수 있습니다. 그 코드를 프로세서에 배포하여 프로세서가 Simscape™ 및 Simscape Electrical™ 구성요소로 개발된 시뮬레이션된 플랜트(이 경우에는 시뮬레이션된 배터리 동역학)와 상호연결되어 있는 PIL(Processor-in-the-Loop) 테스트의 일부로서 구동을 테스트합니다.

AI 모델을 코드로 변환하여 칩에 배포되고 시뮬레이션된 테스트 환경에서 테스트하는 과정을 보여주는 다이어그램.

AI 모델의 코드를 생성하고 프로세서에 배포하여 Processor-in-the-Loop 테스트에 사용합니다.

PIL 테스트를 통과한 모델은 프로덕션 하드웨어에 배포할 수 있습니다. 그 하드웨어가 자동차의 배터리 관리 시스템을 실행하게 됩니다.

AI 모델을 코드로 변환하고 칩에 배포하며 자동차에서 테스트하는 과정을 나타내는 다이어그램.

AI 모델의 코드를 생성하고 하드웨어에 배포하여 자동차에서 테스트합니다.

섹션

성능 평가

PIL 테스트를 하면 실제 시스템에 관련된 성능의 장단점이 드러나게 됩니다. 예를 들어, 조밀한 회귀 트리 모델은 문제 해결에 도움이 될 수 있는 해석 가능성을 높여주지만 그 크기와 정확도가 프로젝트 요구사항에 부합하지 않을 수 있습니다. 그러한 경우에는 피드포워드 신경망이 더 나은 대안이 될 수 있습니다.

기타 관련 특성들은 다음과 같습니다.

  • 추론 속도. AI 모델이 예측치를 계산하는 데 걸리는 시간을 나타냄
  • 훈련 속도. 훈련 데이터를 사용하여 AI 모델을 훈련시키는 데 걸리는 시간을 나타냄
  • 전처리에 드는 노력. 일부 모델의 경우 과거에 관한 예측 정보를 획득하기 위해 이동평균 같은 추가적인 특징 계산이 필요함
모델들이 네 열에 각각 표시되어 있고 훈련 속도, 해석 가능성, 추론 속도, 모델 크기, 정확도를 비교하여 성능의 장단점을 보여주는 테이블. 예를 들어 DL-LSTM 모델은 추론 속도가 느리고 모델 크기가 크며 정확도가 높습니다.

다양한 가상 센서 모델링 기법들의 중요한 특성 비교. DL-FNN은 추론 속도가 빠르고 정확도가 높지만 전처리 노력이 필요하고 훈련 시간이 오래 걸리며 해석 불가능합니다.

섹션

AI 모델 압축

모델 압축은 분석과 이해, 반복, 최적화가 필요한 절충입니다. 하지만 AI 모델의 크기가 하드웨어의 메모리 제약 조건을 초과하는 경우가 있기 때문에 임베디드 소프트웨어 엔지니어는 종종 모델을 압축해야 합니다.

엔지니어들은 가지치기, 양자화 및 고정소수점 변환 기법 등을 통해 모델의 크기를 줄이는 방법을 모색하고 있습니다.

Deep Learning Toolbox™의 새로운 모델 크기 축소 방법에서는 투영을 사용하여 딥러닝 신경망을 압축합니다. 이 기법을 사용하면 모델 크기, 추론 속도, 정확도 간에 절충점을 찾을 수 있습니다. 이 예제의 경우에는 유의미한 정확도의 상실이 없었습니다. 투영 계층을 사용한 압축을 통해 메모리 사용량이 91% 감소했고 추론 속도가 두 배로 향상되었습니다.

DL-LSTM 모델이 압축된 경우와 그렇지 않은 경우를 비교한 표. 압축된 모델은 그렇지 않은 모델에 비해 추론 속도가 빠르고 크기가 훨씬 작지만 정확도가 낮아지지 않았습니다.

압축을 통해 매우 정확하지만 크고 느린 모델을 정확도를 희생하지 않고 더 작고 빠르게 실행되는 모델로 변환할 수 있습니다.

섹션

고객이 설계한 전기차용 BMS 살펴보기

차세대 에너지 저장 기술 기업인 Gotion은 전기차 충전 중에 충전 상태를 추정하기 위한 신경망 모델을 만들기를 원했습니다. 모델의 정확도는 오차 범위가 3% 이내여야 했고 프로덕션 배포가 가능할 정도로 크기가 작아야 했습니다. 또한 모델을 온보드 차량 테스트에서 검증해야 했습니다.

이 팀은 Deep Learning Toolbox를 통해 과거의 셀 충전 데이터로 신경망을 훈련시키는 로우코드 접근법을 사용할 수 있었습니다. 그들은 반복적 워크플로를 사용하여 모델을 시뮬레이션하고 개선하며 검증했습니다. 엔지니어들은 Simulink를 사용하여 모델을 나머지 시스템에 통합하고 테스트했습니다. 그들은 시뮬레이션 중에 모델이 정확도 요구사항을 충족하는지 Simulink Test™를 사용하여 검증했습니다.

모델의 성능이 만족스러운 수준에 도달하자 그들은 HIL 테스트와 온보드 차량 테스트를 위해 자동으로 코드를 생성했습니다.

엔지니어들은 MATLAB 및 Simulink를 사용하여 얻을 수 있는 다음과 같은 핵심 이점에 주목했습니다.

  • Requirements Toolbox, Deep Learning Toolbox, Simulink, Embedded Coder, Simulink Test 등을 사용하여 AI를 기존의 확인 및 검증 워크플로에 통합
  • 요구사항 수집부터 모델 개발, 시스템 통합, 모델 배포, 프로덕션 하드웨어에 이르는 전체 워크플로 수행
  • 시뮬레이션 및 HIL 테스트를 통해 배포 전에 모델의 정확도 요구사항 충족 여부 확신
  • 적은 용량(<2 KB ROM, <100 B RAM)으로 신경망에서 자동으로 코드 생성
변화하는 전압, 전류, 온도 등의 다양한 조건에서, 목표 충전 상태와 추정된 충전 상태가 유사함을 보여주는 네 개의 그래프.

Simulink Test를 사용하면 극심한 추운 날씨에서의 테스트 등 실제 테스트에서 시뮬레이션하기 어려운 조건을 포함한 다양한 조건에서 시스템 수준의 정확도를 테스트할 수 있습니다.

지식 테스트