CI/CD(지속적 통합과 지속적 배포) 파이프라인을 구현할 경우 애플리케이션과 서비스를 원활하게 구축하고 배치할 수 있다. 또한, 테스트를 자동화하고 지속 테스트 관행을 도입하면 각 팀이 품질과 신뢰성, 성능을 관리하는 데 도움이 된다. 지속 테스트가 실시되면 애자일 개발팀은 테스트를 조기에 실시할 수 있고 테스트 사례의 개수와 테스트 속도를 늘릴 수 있다.
단, 테스트 사례를 구축하여 자동화하는 것과 적정한 개수의 사용례와 경계 시나리오를 검증하기에 충분한 용량과 다양성을 갖춘 테스트 데이터를 확보하는 것은 별개의 문제다. 예를 들어, 웹사이트 등록 양식을 테스트할 때는 누락된 데이터, 긴 데이터 입력값, 특수 문자, 다국어 입력값 등 다양한 입력 패턴의 조합을 검증해야 한다.
문제는 테스트 데이터를 생성하는 것인데 합성 데이터 생성이 대안이 될 수 있다. 합성 데이터 생성이란 다양한 패턴을 활용하여 모델과 입력 패턴을 바탕으로 데이터 집합을 추정하는 방식이다. 필요한 데이터 종류와 용량을 맞출 수 있고 실제 데이터 사용 시의 법적 문제나 기타 규정 준수 문제 있는 경우에도 활용할 수 있다는 것이 장점이다.
액셀라리오(Accelario) 공동 창업주 겸 CTO 로만 골로드는 “합성 데이터는 필요한 데이터가 존재하지 않거나 원래의 데이터 집합이 개인 식별 정보로 가득 차 있을 때 활용하면 매우 좋다”라면서 “기존 테스트 데이터 관리용 스키마를 기반으로 합성 데이터를 생성하거나 BI, AI 등의 분석을 통해 실행 가능한 결과를 얻는 규칙을 만드는 방식이 가장 좋다. 두 경우 모두 변화하는 비즈니스 요건에 따라 합성 데이터 생성 자동화가 세밀하게 조정 가능해야 한다”라고 강조했다.
합성 데이터 생성 사용례
합성 데이터 생성은 가장 기본적으로 애플리케이션 테스트와 자동화 및 통합에 필요하다. 데이터 과학 테스트에 머신러닝과 인공 지능 알고리즘용 테스트 데이터가 필요해지면서 수요가 늘어나고 있다. 데이터 과학자는 합성 데이터를 신경망 훈련에 활용하기도 하고 머신에서 생성된 데이터를 모델의 결과 검증에 활용하기도 한다.그 외의 합성 데이터 사용례는 다음과 같이 좀 더 구체적이다.
- 두 가지 인프라에서 구동되는 똑같은 앱이 동일한 결과를 생성하는지 확인하는 방식으로 진행하는 클라우드 이전 테스트
- 보안 테스트나 사기 탐지, 그 밖에 실제 데이터가 존재하지 않는 현실 상황에서 사용할 데이터 생성
- 테스트 실시자가 실시간 데이터를 이주하기 전에 구성을 검증하고자 하는 경우 대형 ERP(전사적자원관리) 및 CRM(고객관계관리) 업데이트를 테스트하기 위한 데이터 생성
- 의사 결정 지원 시스템이 경계 조건을 테스트하고 기능 선택을 검증하고 편견 없는 광범위한 테스트 데이터 견본을 제공하고 AI 결과가 설명 가능한지 확인하는 데이터 생성
- 자율 주행 차량 등과 같은 사물 인터넷 시스템과 AI를 대상으로 한 압박 테스트와 다양한 안전 상황에 대한 AI 및 사물 인터넷 시스템의 대응 검증
고차원 데이터 입력값과 필수 품질 및 안전 요소로 알고리즘이나 애플리케이션을 개발하는 경우에는 합성 데이터 생성을 통해 대형 데이터 집합을 비용 효율적으로 생성할 수 있다.
KNIME 소속 데이터 과학자 마리트 위드먼은 “실제 데이터의 가용성 또는 사용성 문제 때문에 합성 데이터 이외에는 방법이 없을 때가 있다”라고 말했다.
플랫폼의 합성 데이터 생성 방식
플랫폼이 합성 테스트 데이터를 생성하는 방식과 필요한 데이터를 생성하기 위한 최적의 알고리즘 및 구성을 선택하는 방법이 궁금할 수도 있다.위드먼은 “합성 데이터 생성에는 통계적 확률에 기반하거나 머신러닝 알고리즘에 기반하는 양대 전략이 있다. 최근에는 장단기메모리(LSTM) 네트워크, 생산적 적대 신경망(GAN)과 같은 순환 신경망(RNN)같은 딥 러닝 기법이 새로운 음악과 텍스트, 이미지를 그야말로 무에서 창조하면서 인기가 높아졌다”라고 설명했다.
데이터 과학자는 시계열 데이터와 텍스트 분석과 같이 데이터 지점 간에 종속성이 있을 때 RNN을 사용한다. LSTM는 일련의 반복되는 모듈을 통해 일종의 장기 메모리를 생성하는데 각각의 모듈에는 메모리 같은 기능을 제공하는 게이트가 있다. 예를 들어, LSTM은 텍스트 애널리틱스 분야에서 문자와 단어 간의 종속성을 학습하여 새로운 문자 배열을 생성할 수 있다. 음악 생성, 사기 탐지, 구글의 픽셀 6 문법 교정에도 사용되고 있다.
GAN은 다양한 형식의 이미지 생성과 사이버보안 분야에서의 비밀번호 알아내기는 물론 심지어 피자 제조에도 사용되었다. GAN은 하나의 알고리즘으로 데이터 패턴을 생성한 후 두 번째 알고리즘으로 데이터 패턴을 테스트하는 방식으로 데이터를 생성한다. 그 다음에는 두 가지 사이에 적대적 경쟁이 형성되어 최적의 패턴을 찾아낸다. 합성 데이터 생성을 위한 GAN의 코드 사례로는 파이토치(PyTorch) 수기 숫자, 1차원 가우시안 분포 개발을 위한 텐서플로(TensorFlow) 모델, 인공위성 영상 시뮬레이션을 위한 R 모델 등이 있다.
머신러닝과 통계 기반의 모델을 선택하는 데는 과학적인 기술이 있다. 모니타우르(Monitaur) 공동 창업주 겸 CTO 앤드류 클라크는 합성 데이터 생성으로 이런 저런 실험을 하는 방법을 설명했다. “경험적으로 볼 때 좋은 방법은 해당 작업을 적절한 수준의 정확성을 갖춰 수행하되 가장 간단한 모델을 항시 선택하는 것이다. 고객 체크아웃 라인을 모델링하는 경우라면 푸아송 분포 기반의 일변량 추계 프로세스로 시작하면 좋다. 반면, 대량의 대출 인수 자료가 있고 테스트 데이터를 생성하고 싶은 경우, 개별 특징 간의 복잡한 상관관계 등을 캡처하는 데는 GAN 모델이 더 적합하다.”
데이터 과학 사용례 작업에는 합성 데이터 생성 모델을 개발할 유연성이 필요하다. 이를 위해 시중에 나온 컴퓨터 비전을 위한 추치(Chooch), 데이토마이즈(Datomize), 딥 비전 데이터(Deep Vision Data) 등 중에서 선택하여 활용할 수 있다.
애플리케이션 테스트가 목적이라면 테스트 데이터 관리 또는 합성적 테스트 데이터 생성을 위한 액셀라리오, 델픽스(Delphix), 젠로켓(GenRocket), 인포매티카(Informatica), 케이투뷰(K2View), 토닉(Tonic)과 같은 플랫폼이나 오픈소스 테스트 데이터 생성기 같은 여러 테스트 데이터 툴을 고려해 본다. 마이크로소프트 비주얼 스튜디오 프리미엄(Visual Studio Premium)에도 테스트 데이터 생성기가 내장되어 있다. 자바 개발자라면 바딘(Vaadin)의 데이터 생성기를 활용한 사례를 검토하는 것도 좋다.
강력한 테스트 관행을 확보하는 것은 오늘날 매우 중요하다. 애플리케이션 신뢰성과 머신러닝 모델의 정확성에 조직들의 사활이 달려 있기 때문이다. 합성 데이터 생성은 간극을 메우는 또 하나의 방식이다. 이를 통해 테스트, 훈련 또는 검증 방법론을 갖추게 될 뿐만 아니라, 모델을 구축하고 애플리케이션을 검증하기에 충분한 데이터를 생성할 수단을 갖추게 된다.
editor@itworld.co.kr