실제 아키텍처의 구조
ONNX로 변환되고 약 40 MB로 압축된 비전 트랜스포머(vision transformer)로, 호스팅 플랫폼의 파일 크기 제한을 넘지 않도록 두 부분으로 나뉘어 있습니다. 브라우저에서 재조립되며 실행 전에 체크섬(checksum)이 검증됩니다.
추론은 브라우저 탭 내에서 컴파일된 런타임이 네이티브 속도에 가깝게 실행되도록 하는 WebAssembly를 통해 이루어집니다. 런타임 자체는 가중치와 함께 로드되는 압축된 WASM 바이너리입니다.
이 중 더 이상 이국적인 것은 없습니다. 2021년의 연구 시연이었던 것이 이제는 모델을 배포하는 일반적인 방식이 되었으며, 브라우저가 대부분의 작업을 수행했습니다.
얻는 이점
| 부동산 | 브라우저 내 | 서버 상 |
|---|---|---|
| 이미지가 기기를 이탈함 | No 불가능 | Yes 필수 |
| 검사당 비용 | Yes 0 | No 실제 연산 |
| 데이터 처리 계약 필요 | No | Yes |
| 로드 후 네트워크 없이 작동 | Yes | No |
| 모델을 비공개로 유지 가능 | No 다운로드됨 | Yes |
| 첫 번째 검사는 즉시 완료됨 | No 모델은 한 번 다운로드됨 | Yes |
첫 번째 행은 나머지가 존재하는 이유입니다. 업로드 엔드포인트가 없으므로 다른 사람의 사진 버킷도 없고, 작성해야 할 보관 정책도 없으며, 유출 시 공표할 필요도 없고, 요청 시 제출해야 할 것도 없습니다.
두 번째 행은 사용량 측정기 없이 무료로 제공될 수 있는 이유입니다. 검사 제공에 비용이 들지 않으므로 회수해야 할 이미지당 비용이 없고, 이로 인해 가격 정책의 모습이 달라집니다.
지불하는 대가
장점만 나열하는 페이지는 광고에 불과하므로, 가감 없이 명시하는 세 가지 실제 트레이드오프.
- 첫 번째 검사는 느립니다. 무슨 일이 일어나기 전에 40 메가바이트가 도착해야 합니다. 빠른 연결에서는 몇 초지만, 느린 연결에서는 더 걸립니다. 이후의 검사는 캐시된 모델을 재사용하므로 즉시 시작됩니다.
- 오래된 기기는 버거워합니다. 추론에는 5년 된 전화기에는 충분하지 않을 수 있는 메모리 and 프로세싱이 필요합니다. 서버는 사용 중인 기기를 신경 쓰지 않습니다.
- 모델은 공개됩니다. 브라우저에 다운로드된 모든 것은 보관될 수 있습니다. 서버 측 모델은 독점적일 수 있지만, 이 모델은 그럴 수 없으며 가중치는 어차피 공개된 연구 체크포인트입니다.
세 번째 요점은 직접적으로 다룰 가치가 있습니다. 클라이언트에 모델을 배포한다는 것은 그것을 공개하는 것을 의미합니다. 가중치가 이미 공개되어 있고 이 도구를 유용하게 만드는 작업이 보정, 타일링, 그 주변에 구축된 해석이기 때문에 여기서는 수용 가능한 트레이드오프입니다.
알아둘 가치가 있는 엔지니어링 문제들
대용량 파일 분할
정적 호스팅 플랫폼은 개별 파일 크기를 제한합니다. 40 MB 모델은 제한을 초과하므로, 사용 전에 브라우저에서 재조립되고 매니페스트 해시와 대조하여 확인되는 두 개의 결정론적 부품으로 배포됩니다. 손상되거나 대체된 부품은 잘못된 점수를 조용히 내는 대신 오류를 명확히 발생시킵니다.
필요할 때까지 아무것도 로드하지 않음
모델, 런타임, 자격 증명 판독기는 페이지 로드 시 가져오지 않습니다. 첫 번째 상호 작용 시 도착하므로 기사를 읽는 사람은 그 어떤 것도 다운로드하지 않습니다. 이는 검사를 실행하지 않는 대다수의 방문자를 위해 페이지를 빠르게 유지합니다.
다루기 까다로운 형식 디코딩
iPhone의 HEIC, AVIF, TIFF, JPEG XL은 모두 점수 매기기 전에 디코딩이 필요합니다. 브라우저는 이제 이러한 형식의 대부분을 네이티브로 처리하며, 이는 이와 같은 도구에서 클라이언트 측 작업 중 가장 큰 부분을 차지하던 것을 제거해 줍니다.
이 아키텍처가 잘못된 선택인 경우
보편적으로 더 나은 것은 아닙니다. 모델이 독점적이고 보호할 가치가 있거나, 배송하기에는 너무 크거나, 사람이 아닌 백엔드 파이프라인에서 결과가 필요하거나, 기기에 관계없이 보장된 응답 시간이 필요할 때 서버가 더 타당합니다.
누군가 의심스러운 사진 한 장을 확인하기 위해 여는 도구의 경우, 이 중 어느 것도 해당되지 않으며 프라이버시 속성은 서버가 추가할 수 있는 모든 것보다 가치가 큽니다.
이것이 배제하는 것들
클라이언트를 선택하는 것에는 프라이버시를 넘어선 결과가 따르며, 그중 일부는 기능이라기보다는 명명할 가치가 있는 제한 사항입니다.
기록이 없습니다. 결과는 그것을 생성한 탭 내에만 존재하므로, 내보내지 않는 한 나중에 조회할 수 없습니다. 이는 계정이 없는 것에 대한 직접적인 대가이며, 이 아키텍처가 다루기 까다롭게 만드는 가장 많이 요청되는 단일 사항입니다.
공유 상태가 없습니다. 두 사람이 동일한 대기열을 볼 수 없으며, 팀이 서로의 검토를 검토할 수 없습니다. 공유 링크는 워크플로가 아닌 대화를 다루는 단일 결과만 전달합니다.
API가 없습니다. 브라우저 탭에서 실행되는 모든 것은 백엔드 파이프라인에서 호출할 수 없으므로 최고 볼륨의 사용 사례를 완전히 배제합니다. 이들은 실제 공백이며, 정직한 입장은 그것이 더 중요한 속성의 대가라는 점입니다.