보통 로컬에서 직접 embeddings 를 돌려서 처리하려고 했을 때는 직접 fastapi 든 뭐든 구현을 해서 돌렸어야 했었죠.


혹시나 해서 찾아보니 OpenAI 호환 API 형태로 embeddings 를 돌릴 수 있는 프로그램을 찾았습니다.


https://github.com/michaelfeil/infinity.git


위 git repo 에 보면 README.md 의 Getting Started 에 설치방법이 나와있는데요.

이걸로 하면 설치가 제대로 안되더군요.

pip install infinity-emb[all]

그 아래에 삼각형 표시 눌러서 열리는 수동 설치로 하니 잘 되었습니다.

git clone https://github.com/michaelfeil/infinity
cd infinity
cd libs/infinity_emb
poetry install --extras all


그런데 또 문제가 있었으니, 현재 버젼? 인 commit hash 296472e 에서 시작 시 torch.compile() 에서 오류가 발생하더군요.

macOS 에서는 늘상 이런 일이 있으니 그러려니 했는데, linux cuda 환경에서도 이래서 매우 당황스러웠습니다.


이 문제는 환경변수 export INFINITY_DISABLE_COMPILE=TRUE 를 설정하면 해결되었구요. torch.compile() 을 안해서 살짝 느리겠지만 일단 돌아갑니다.


이 상태에서 infinity_emb 를 실행하여 API 서버를 띄워도 되고, Python 에서 infinity_emb 패키지를 import 하여 직접 코드를 작성해서 사용해도 됩니다.


아직 이걸 가지고 많은 것을 해보지는 못했지만, 매우 편하게 쓸 수 있는 물건이 등장하여 좋네요.


* 추가: Python 3.11 에서 돌렸었는데, Python 3.10 에서 돌리니까 torch.compile() 오류 안납니다.