대다수의 챗봇 시스템은 아직도 규칙 기반으로 동작하지만, 자연스러운 대화를 구현하기 위해서는 결국 BERT 등 더 복잡한 언어 모델들을 사용해야 합니다. 다만, BERT는 무겁고 복잡하다는 인식이 많은데, 게임 플랫폼 업체인 Roblox에서 BERT를 사용하여 서비스화하기 위해 했던 일들을 간략하게 소개했습니다. 기본적으로 GPU를 써서 서비스하는 것은 비용대비 효율이 좋지 않으므로 CPU를 쓰는 시나리오로 처음부터 준비를 했네요.
바닐라 BERT 대비 총 3가지의 변화를 주었는데, (1) DistilBert (2) Dynamic input shape (3) Integer Quantization 입니다. 대략적으로 수행 속도를 보면 (1)과 (2)는 각각 2배씩 빨라지고, (3)은 약 8배가 빨라집니다. 전부 다 적용하면 바닐라 BERT 대비 약 30배가 빨라졌고 latency도 크게 줄었다고 합니다. 32-core Xeon 기준 초당 3천이 넘는 인퍼런스가 가능해졌고, 이는 비슷한 가격의 V100 GPU 대비 6배 이상의 효율이라고 합니다. 특히 CPU의 경우 (3)의 영향을 더 많이 받을 것으로 생각되는데, 추후에 테스트를 한 번 해 봐야 겠습니다.
How We Scaled Bert To Serve 1+ Billion Daily Requests on CPUs
Here’s a classic chicken-and-egg problem for data scientists and machine learning engineers: when developing a new machine learning model for your business, do you first make it accurate, then worry…