포스팅 목차
자율 주행 차량은 일종의 모바일 시스템이라 할 수 있습니다. 이를 지원하는 클라우드 플랫폼이 필요합니다. 클라우드의 주요 기능은 분산 컴퓨팅과 분산 스토리지라는 두 가지가 있습니다. 새로운 알고리즘을 검증하기 위한 시뮬레이션과 HD 맵 제작, 딥 러닝 모델 학습 등에서 활용을 할 수가 있습니다.
시뮬레이션
클라우드의 대표적인 응용 분야는 시뮬레이션입니다. 새로 개발한 알고리즘을 자동차에 배치하기 전에 엄격한 테스트를 거쳐야 합니다. 실제 자동차로 테스트하려면 막대한 비용이 소요되고 한 번 테스트하는 데 걸리는 시간도 상당합니다. 그래서 ROS 노드에 데이터를 재생하는 방식으로 구현된 시뮬레이터에서 주로 테스트를 진행합니다. 하지만 새로 개발한 알고리즘을 단 한 대의 머신에서 테스트하기에는 시간도 오래 걸리고 테스트 범위를 충분히 확인할 수 없습니다.
이러한 문제를 해결하기 위해서 분산 시뮬레이션 플랫폼을 이용합니다. 분산 컴퓨팅 노드들은 스파크로 관리하고 각 노드마다 ROS 리플레이 인스턴스를 구동했습니다. 당시 사용한 자율 주행용 물체 인지 테스트 세트를 단 한대의 서버에서 구동하면 세 시간가량 걸렸지만 분산 시스템에서는 최대 8개 노드를 사용하면서 25분 만에 테스트를 끝낼 수 있었습니다.
HD 맵 생성
HD 맵 생성 과정은 여러 단계로 복잡하게 구성됩니다. 각 단계는 원본 데이터 처리, 포인트 클라우드 생성, 포인트 클라우드 정렬, 2D 반사 맵 생성, HD 맵 레이블링 마지막으로 최종 맵 생성 등으로 구성됩니다. 스파크를 통해 각 단계를 하나의 스파크 잡으로 연결했습니다. 여기서 중요한 부분은 스파크에서 제공하는 인메모리 컴퓨팅 메커니즘을 활용했다는 점입니다. 중간 상태의 데이터를 하드 디스크에 저장할 필요가 없어서 맵 생성 프로세스의 성능을 크게 향상할 수 있었습니다.
딥 러닝 모델 학습
자율 주행 시스템에서 다양한 딥 러닝 모델을 사용하기 때문에 모델의 유효성과 효율성을 지속적으로 향상하도록 업데이트해야 합니다. 하지만 자율 주행 과정에서 생성되는 원본 데이터의 양이 엄청나기 때문에 하나의 서버만으로는 모델을 빠르게 학습시킬 수 없습니다. 이러한 문제를 해결하기 위해 스파크와 패들을 기반으로 확장성이 뛰어난 분산 딥 러닝 시스템을 구축했습니다.
스파크 드라이버에서 스파크 콘텍스트와 패들 콘텍스트를 관리하고 각 노드마다 있는 스파크 실행자에서 패들 트레이너 인스터를 구동했습니다. 그 위에 이종 컴퓨팅 자원 관리를 위한 얀과 매개변수 서버를 위한 알럭시오를 얹었습니다. 이렇게 구성한 시스템을 통해 리소스를 추가할수록 성능이 선형적으로 확장하는 시스템을 구축할 수 있었습니다. 자율 주행과 인공지능은 하나의 기술이 아닌 여러 가지 기술을 결합한 것입니다. 알고리즘뿐만 아니라 시스템 통합과 클라우드 플랫폼에 대한 혁신이 필요합니다.