Hugging Face 엔드포인트에서 개인정보 보호 추론 실행
Zama와 Hugging Face는 개인정보 보호 머신러닝 프레임워크인 Concrete ML을 Hugging Face 엔드포인트와 통합했습니다. 이 통합을 통해 개발자는 Fully Homomorphic Encryption(FHE)을 활용하는 사전 컴파일된 모델을 배포할 수 있게 되며, 개인 키 없이 암호화된 데이터에 직접 연산을 수행할 수 있어 추론 중에도 사용자 데이터가 비공개로 유지됩니다.
Hugging Face 엔드포인트를 통한 FHE 기반 추론
사용자는 "Inference Endpoint (dedicated)" 옵션을 사용하여 Hugging Face Hub에서 직접 FHE 친화 모델을 배포할 수 있습니다. 현재 Concrete ML 모델은 GPU를 지원하지 않으므로, 배포 시 CPU 기반 머신을 선택해야 하며(현재 최대 8개의 vCPU 사용 가능)
클라이언트 측 워크플로우
FHE 엔드포인트와 상호 작용하려면 사용자는 다음 단계를 수행해야 합니다:
- 모델 저장소 복제: 사용자는 Hugging Face에서 특정 모델 저장소를 로컬 머신으로 복제합니다.
- 환경 설정: 사용자는 Python 3.10을 사용하여 로컬에 Concrete ML 및 종속성을 설치합니다(Hugging Face 엔드포인트와 호환되도록 필요).
- 실행: 제공된 스크립트(예:
play_with_endpoint.py)를 사용하여 사용자는 입력 데이터를 로컬에서 양자화하고 암호화한 뒤 엔드포인트에 전송합니다. - 복호화: 엔드포인트는 암호화된 예측값을 반환하며, 사용자는 이를 로컬에서 복호화하고 역양자화하여 최종 결과를 확인합니다.
커스텀 핸들러를 통한 기술 구현
이 기능은 Hugging Face의 custom inference handlers를 통해 구현됩니다. Zama는 handler.py 파일을 구현하여 EndpointHandler에 대한 커스텀 __call__ 메서드를 정의했습니다. 이를 통해 엔드포인트는 특정 FHE 작업을 지원할 수 있습니다:
save_key: FHE 평가 키를 저장합니다.append_key: 큰 FHE 평가 키를 작은 조각으로 나누어 저장합니다.inference: 암호화된 데이터에 대해 FHE 추론을 실행합니다.
모델 성능 및 가용성
Zama는 다양한 ML 작업을 시연하고 Hugging Face CPU 엔드포인트에서의 실행 시간을 보여주는 여러 사전 컴파일 예제 모델을 제공했습니다:
| 모델 종류 | 데이터셋 | HF 엔드포인트 실행 시간 |
|---|---|---|
| 로지스틱 회귀 | 합성 | 0.4초 |
| DecisionTree | 스팸 | 2.0초 |
| QNN | Iris | 3.7초 |
| CNN | MNIST | 24초 |
제한 사항 및 향후 방향
통합을 통해 개인정보 보호 추론이 가능해졌지만, 몇 가지 기술적 제약이 존재합니다:
- 휘발성 키 저장소: 평가 키가 엔드포인트의 RAM에 저장됩니다. 엔드포인트가 재시작되면 키가 사라져 다시 전송해야 합니다.
- 스케일링: RAM이 머신 간에 공유되지 않기 때문에 다수 인스턴스에 걸친 대량 트래픽 처리가 어렵습니다.
- 하드웨어 제약: 현재 CPU 기반 엔드포인트는 최대 8개의 vCPU만 지원하므로 고부하 애플리케이션에 제한이 있을 수 있습니다.
커스텀 FHE 모델 준비
개발자는 Zama의 기존 저장소를 포크하고 creating_models.py를 수정하여 자신만의 데이터셋과 작업에 맞는 사전 컴파일 모델을 만들 수 있습니다. 이 과정은 Concrete ML로 모델을 학습해 client.zip, server.zip, versions.json 파일을 생성하고, 이를 concrete-ml 및 FHE 태그와 함께 Hugging Face Hub에 업로드하여 검색 가능하도록 합니다.
향후 개선 사항
Zama와 Hugging Face는 보다 강력한 CPU 머신 제공, Concrete ML을 Hugging Face 인터페이스에 더 깊게 통합(예: 전용 "Private-Preserving Inference Endpoint" 버튼) 및 다중 서버 머신 간에 FHE 추론 키를 위한 비휘발성 공유 상태 저장소 구축 등을 통해 경험을 개선하고자 합니다.