GPU 속도 주장을 고치는 대신 지웠습니다
같은 이야기를 여러 분이 전해 주셨습니다. 최신 그래픽카드가 멀쩡히 있고, 드라이버도 최신이고, 기기의 다른 모든 것이 그 카드를 잘 쓰고 있는데 — 저희 앱만 호환 GPU 를 찾을 수 없다고 말한다는 것이었습니다.
이 글은 그걸 고쳤다는 발표가 아닙니다. 고치는 동안 저희가 무엇을 했는가에 대한 글이고, 그 결정이 더 이야기할 만합니다.
동작하는 GPU 와 쓸 수 있는 GPU 는 다르다
카드가 게임을 돌리고 드라이버 도구가 이상 없다고 하면 어떤 애플리케이션이든 그걸 쓸 수 있으리라 생각하는 건 자연스럽습니다. 머신러닝 작업에서는 그 가정이 성립하지 않습니다.
모델을 GPU 에서 돌리려면 애플리케이션에 그리로 가는 런타임 경로가 필요합니다 — 모델의 연산을 카드가 이해하는 작업으로 옮겨주는 부품입니다. Windows 에서는 보통 DirectML 이고, NVIDIA 하드웨어에서는 CUDA 일 수 있고, Apple Silicon 에서는 CoreML 입니다. 애플리케이션이 그 경로를 담아 배포해야 하고, 시작 시 그것이 로드돼야 하며, 눈앞의 드라이버·하드웨어와 호환돼야 합니다.
이 사슬 어디가 끊겨도 밖에서 보이는 결과는 똑같습니다 — 프레임워크가 쓸 수 있는 장치가 없다고 보고합니다. 카드는 멀쩡합니다. 거기로 가는 길이 아닌 것입니다.
저희는 Windows 에서 DirectML 경로를 담아 배포하고, 앱이 시작할 때 시도한 뒤 검증에 실패하면 CPU 로 물러납니다. 일부 기기에서 그 검증이 실패하고, 왜 그런지에 대한 확실한 설명을 저희는 아직 갖고 있지 않습니다. 그것이 지금 위치에 대한 정직한 서술입니다.
즉시 고칠 수 있었던 부분
그 모든 게 미해결인 동안 사실이었던 것이 하나 있습니다. 저희 앱과 웹사이트에 GPU 가속에 관한 문구가 실려 있었습니다. 어떤 줄은 "가능한 한 가장 빠른 속도"를 약속했습니다. 다른 줄은 느림을 사용자 하드웨어 탓으로 설명했습니다.
위의 제보들과 나란히 놓고 보면 문제가 명백합니다. GPU 가 끝내 안 붙는 사용자에게 그 문구는 낙관이 아니라 거짓이고, 대가를 치르게 하는 방식으로 거짓입니다. 그걸 보고 제품을 골랐는데, 그 뒤의 모든 느린 순간이 지키지 않은 약속에 견주어 재어집니다. 게다가 그 문구는 저희의 한계를 사용자의 하드웨어 탓으로 돌리고 있었습니다.
그래서 지웠습니다. 누그러뜨리거나 단서를 붙인 게 아니라 걷어냈고, 함께 실려 있던 성능 수치들 — 옛 버전에서 인용된 채 지금 제품을 더는 설명하지 못하는 숫자들 — 도 같이 걷어냈습니다. 이제 앱은 어디서도 GPU 속도를 주장하지 않고, 느림을 당신의 기기 탓으로 돌리지 않습니다.
왜 수정보다 삭제가 먼저였나
붙는 문제를 먼저 고치고 주장은 유지했어야 하지 않느냐는 반론이 자연스럽습니다. 저희 생각은 다르고, 이유를 분명히 적을 만합니다.
주장은 지금 결정하는 사람에게 지금 하는 약속입니다. 그 약속이 오늘 일부 독자에게 사실이 아니라면, 나중에 사실이 될 수도 있다는 사정은 그들에게 아무 도움이 되지 않습니다. 이미 설치했고, 기다렸고, 이 소프트웨어가 진실을 말하는지에 대한 결론을 내렸을 테니까요. 신뢰는 수정하는 순간이 아니라 주장하는 순간에 쓰입니다.
수정은 별개의 작업으로 계속됩니다. GPU 가속이 정직하게 서술할 수 있을 만큼 안정적으로 붙게 되면 그때 서술하겠습니다 — 포부가 아니라 출하 빌드에서 잰 수치로.
LocalSynapse 가 속도에 대해 실제로 약속하는 것
저희는 CPU 를 기준으로 설계합니다. 이건 위로가 아니라 의도된 성질들의 묶음입니다.
- 색인이 도는 동안에도 검색됩니다. 파일은 읽히는 대로 내용으로 검색되므로, 제품이 쓸모 있어지기까지 결승선을 기다리지 않습니다.
- 색인은 상한 아래에서 돕니다. 남는 자원을 다 먹는 대신 사이클마다 정해진 예산을 씁니다. 최선의 경우엔 조금 느리고, 최악의 경우엔 훨씬 쾌적합니다 — 사람이 실제로 겪는 건 후자입니다.
- 메모리를 돌려줍니다. 가끔 있는 즉시 검색을 위해 붙들고 있는 대신, 색인할 것이 없어지면 의미검색 모델을 놓습니다.
- 완결보다 우선순위. 중요할 가능성이 높은 파일부터 처리하므로 전부 끝나기 한참 전에 쓸 만한 결과가 나옵니다.
로컬 검색 도구를 비교하신다면 유용한 질문은 "GPU 를 지원하나요?"가 아닙니다 — 거의 모두가 그렇다고 답할 겁니다. "GPU 를 쓸 수 없을 때는 어떻게 하나요?"입니다. 적지 않은 실제 기기에서, 당신이 실제로 지나갈 길은 그쪽이기 때문입니다.