레이블이 huggingface인 게시물을 표시합니다. 모든 게시물 표시
레이블이 huggingface인 게시물을 표시합니다. 모든 게시물 표시

2023년 4월 9일 일요일

huggingface, huggingface_hub, file_download.py etag hang(사용중 멈춤)

 

문제점

https://github.com/huggingface/huggingface_hub/issues/1423

huggingface hub에서 코드를 다운로드 받아서 cache에 저장하게 되는데 저장하는 이름이 http 헤더에 있는 etag를 이용하게 됩니다.

그런데 etag에 window에서 파일 이름으로 사용할 수 없는 이름이 사용할 경우 file lock이 걸리지 않아 멈춤 상태가 되는 현상입니다.

처음이 bug가 발생한 뒤로 몇번이나 cache 삭제 후 재시도 해봤지만 해결되지 않아서 코드를 분석해 보았습니다.


해결 방법

https://github.com/huggingface/huggingface_hub/pull/1428/commits/0aad1081ec30eb888f40cc75dde81a85b60dbd40

패치 소스는 'W/' 제거 후 '"' 부분을 모두 제거하는 방식으로 처리하였고,, 다른 방법은 http etag가 두가지 포맷으로 넘어오게 되는데 W/"etag", "etag"   W/" 와 같이 넘어올때 W/" 부분의 " 부분을 제거 하는 방법도 됩니다. 아래는 사용 예제입니다.

>>> etag='W/"abcdefg"'
>>> etag.replace('W/"','W/').strip('"')
'W/abcdefg'