안녕하세요. Furiosa SDK 0.10.0 버전으로 업데이트를 아래와 같이 진행했는데요.
sudo apt-get update && sudo apt-get upgrade
pip install --upgrade pip setuptools wheel
pip install --upgrade furiosa-sdk
furiosa-sdk 업그레이드 시에 다음과 같은 오류가 발생했고
furiosa.model 을 이용해 yolov5l을 불러오는 스크립트에서 다음과 같은 오류가 발생했습니다.
현재 0.10.0 버전에서는 furiosa.model 0.9.1 버전을 사용할 수 없는건가요? 아니면 문제를 해결할 방법이 있을까요?
1 Like
안녕하세요, 지성님. FuriosaAI 김종욱입니다.
현재 furiosa-models의 경우 0.10.0 버전이 배포가 되지 않아 생기는 문제입니다.
Model Zoo의 모델을 사용하시기 위해 furiosa-models 0.10.0 배포전까지는 이전 버전의 SDK(0.9.2)를 이용하셔야 할 것 같습니다.
감사합니다.
김종욱 드림.
답변 감사드립니다. 다만 SDK를 0.9.2로 다운그레이드 하는 방법을 알 수 있을까요? Python SDK의 경우 $ pip install furiosa-sdk==0.9.2 를 통해서 다운그레이드를 완료했는데 다른 패키지의 경우 어떻게 다운그레이드를 해야 할지 잘 모르겠습니다. 현재 Python SDK만 0.9.2로 재설치한 경우에는 yolov5l을 불러오는 스크립트에서 동일한 오류가 발생합니다.
그리고 Model Zoo 의 사용이 안되는 상황에서 대안으로 0.10.0 버전에서 yolov5s 모델을 compile하는 예제를 통해서 추론을 진행해보려고 했는데요. Yolov5s.dfg까지는 오류 없이 생성이 진행되었는데 추론하는 과정에서 다음과 같은 오류가 나서 질문 드립니다.
오류 상황에서 python sdk 버전은 다음과 같습니다.
sdk만 0.9.2로 재설치를 하신다면 펌웨어, 드라이브, 런타임 등의 업데이트(sudo apt-get update && sudo apt-get upgrade)를 수행하신 상황이라 furiosa-models 사용시 문제가 발생할 수 있습니다. (1번 문제…)
답변을 드리자면, SDK 0.9.2 호환이 되는 버전으로 펌웨어, 드라이브, 런타임을 다운 그레이드 하셔야 할듯 합니다.
다음 이슈에 대하여 답변드리면 yolov5s 레포지토리의 경우 0.9.2 버전을 기준으로 작성된 코드입니다.
에러 상황을 재현하기 위하여 0.10.0 버전에서 테스트를 하였고 동일한 에러가 뜨는 것을 확인하였습니다. yolov5s의 테스트 환경은 아래와 같습니다.
$ apt list | grep furiosa | grep installed
furiosa-compiler/focal,now 0.10.0-2 amd64 [installed,automatic]
furiosa-driver-warboy/focal,now 1.9.2-2 amd64 [installed]
furiosa-firmware-image/focal,now 1.7.3 amd64 [installed]
furiosa-firmware-tools/focal,now 1.5.1-2 amd64 [installed]
furiosa-libcompiler/focal,now 0.10.0-2 amd64 [installed,automatic]
furiosa-libhal-warboy/focal,now 0.11.0-2 amd64 [installed,automatic]
furiosa-libnux/focal,now 0.10.0-2 amd64 [installed]
furiosa-toolkit/focal,now 0.11.0-2 amd64 [installed]
$ pip list | grep furiosa
furiosa-cli 0.10.0
furiosa-common 0.10.0
furiosa-device 0.10.0
furiosa-litmus 0.10.0
furiosa-models 0.9.1
furiosa-native-device 0.2.2
furiosa-native-postprocess 0.9.0
furiosa-native-runtime 0.10.0
furiosa-optimizer 0.10.0
furiosa-quantizer 0.10.0
furiosa-quantizer-impl 0.10.0
furiosa-registry 0.9.1
furiosa-runtime 0.10.0
furiosa-sdk 0.10.0
furiosa-server 0.10.0
furiosa-serving 0.10.0
furiosa-tools 0.10.0
우선 버전을 확인하시고 pip 버전이 알맞지 않은 경우, pip install --upgrade "furiosa-sdk[full]"
을 이용하여 관련 python 패키지는 업데이트 가능합니다. 그 후, TLS block 에러의 경우 아래 명령어를 실행하시면 해결 가능합니다.
export LD_PRELOAD=$(ldconfig -p | grep libgomp | head -n 1 | grep -Eo "\S+$")
1 Like
답변 감사드립니다. 다만 제시해주신 방법으로 TLS block 에러가 해결되지 않아 실행 환경 공유 드립니다. furiosa.runtime.session을 import 시 여전히 에러가 발생하는데 짐작가는 부분이 있으실까요?
안녕하세요,에러 메시지가 가르키고 있는 so 파일을 LD_PRELOAD 로 지정해주시면 에러가 해결 될 것으로 보입니다.
export LD_PRELOAD=/home/oem/.local/lib/python3.8/site-packages/furiosa/native_runtime.cpython-38-x86_64-linux-gnu.so
이와 별개로 0.9.1 버전의 quantizer를 사용하고 계시기 때문에 다른 에러가 발생하실 수 있으므로, 아래 명령어를 이용하여 업데이트를 하셔서 버전을 맞추어 주셔야 정상적으로 동작하시는 것을 확인할 수 있습니다.
pip innstall --upgrade 'furiosa-sdk[quantizer]'
1 Like
답변 감사드립니다. export 결과 아래와 같이 symbol look up 에러가 발생해 질문 드립니다. quantizer는 0.10.0으로 업데이트 했습니다!
아래와 같이 명령어와 함께 LD_PRELOAD를 지정하여주어도 동일한 문제가 발생하시는지요?
LD_PRELOAD=/home/oem/.local/lib/python3.8/site-packages/furiosa/native_runtime.cpython-38-x86_64-linux-gnu.so python3 furiosa_eval.py ...
해당 방법으로 하면 해결이 될 것이라 생각하였는데 dfg 파일이 furiosa-quantizer 0.10.0 버전에서 생성된 파일이 맞으신지 여쭤봅니다. 더하여 에러가 해결이 안되신다면 혹시 conda 환경에서 테스트 해보실 수 있으신 상황이신지요?
Conda 환경 설정 이후, 명령어를 통해 SDK-0.10.0 설치 후 LD_PRELOAD를 설정해주시면 해결이 되는 것은 확인하였습니다.
pip install 'furiosa-sdk[full]'
export LD_PRELOAD=$(ldconfig -p | grep libgomp | head -n 1 | grep -Eo "\S+$")
불편함을 드려 죄송하며 문제 해결을 위해 노력하겠습니다.
감사합니다.
김종욱 드림.
안녕하세요. conda 환결 설정 이후 진행해보았지만 동일한 오류가 발생하네요. 우선 설치된 드라이브, 펌웨어, 런타임 등의 패키지를 다운그레이드 해보도록 하겠습니다. 아래는 conda 환경 설정 이후 오류 내용입니다. 감사합니다.
추가적인 해결 방법 안내드립니다.
-
SDK 업데이트 후(furiosa-quantizer 0.10.0 버전으로 변경), dfg 파일을 새로 생성해주셔야합니다.
-
다음으로, furiosa_eval.py의 아래와 같이 line 11에 위치한 명령어를 import cv2
위에 놓이게끔 수정하셔야 합니다.
1 import argparse
2 import os
3 import numpy as np
4 import random
5 from tqdm import tqdm
6
7 import furiosa.runtime.session
8 import cv2
9 from utils.preprocess import load_input
10 from utils.postprocess import load_output, non_max_suppression, draw_bbox
...
- 다음으로 에러 메시지가 가르키고 있는
libgomp-a34b3233.so.1
파일의 경로를 LD_PRELOAD로 지정해주셔야합니다. 예를들어,
libfuriosa_hal.so --- v0.11.0, built @ 43c901f
/home/ubuntu/miniconda3/envs/test/lib/python3.9/site-packages/furiosa/runtime/session.py:8: FutureWarning: 'furiosa.runtime.session' module is deprecated and will be removed in a future release.
warnings.warn(
Traceback (most recent call last):
File "/home/ubuntu/.jong/yolov5s/furiosa_eval.py", line 10, in <module>
from utils.postprocess import load_output, non_max_suppression, draw_bbox
File "/home/ubuntu/.jong/yolov5s/utils/postprocess.py", line 2, in <module>
import torch
File "/home/ubuntu/miniconda3/envs/test/lib/python3.9/site-packages/torch/__init__.py", line 228, in <module>
_load_global_deps()
File "/home/ubuntu/miniconda3/envs/test/lib/python3.9/site-packages/torch/__init__.py", line 187, in _load_global_deps
raise err
File "/home/ubuntu/miniconda3/envs/test/lib/python3.9/site-packages/torch/__init__.py", line 168, in _load_global_deps
ctypes.CDLL(lib_path, mode=ctypes.RTLD_GLOBAL)
File "/home/ubuntu/miniconda3/envs/test/lib/python3.9/ctypes/__init__.py", line 382, in __init__
self._handle = _dlopen(self._name, mode)
OSError: /home/ubuntu/miniconda3/envs/test/lib/python3.9/site-packages/torch/lib/libgomp-a34b3233.so.1: cannot allocate memory in static TLS block
위와 같이 에러가 발생한다면 맨마지막 줄 OSError가 가르키고 있는 libgomp-a34b3233.so.1
를 지정해주시면 됩니다.
export LD_PRELOAD=/home/ubuntu/miniconda3/envs/test/lib/python3.9/site-packages/torch/lib/libgomp-a34b3233.so.1
report 해주신 문제에 대해서 저희 테스트 환경에서 재현되는 것을 확인하였으며 원인을 파악하고 있습니다. 불편함을 드려서 죄송합니다. 혹여 위 방법을 통해서도 문제가 해결 되지 않으신다면 내용 공유해주신다면 감사드리겠습니다.