Jetson nano로 「현장에서 사용할 수 있다! TensorFlow 개발 입문」의 샘플을 이동한다

Jetson nano로 「현장에서 사용할 수 있다! TensorFlow 개발 입문」의 샘플을 이동한다

2022-10-06 last update

5 minutes reading JetsonNano TensorFlow 도커
현장에서 사용할 수 있다! TensorFlow 개발 입문 Keras에 의한 심층 학습 모델 구축 방법
書影

이 책을 사경하거나 샘플을 다운로드해 움직이려고 했는데, tensorflow의 버전이 1.15이기 때문에, Nvidia NGC가 제공하는 NVIDIA L4T ML 에서는 솔직하게 움직일 수 없었다.

그래서 tensorflow 1.15의 샘플을 거의 그대로 움직일 수 있도록 Docker 환경을 구축했다.

※ 지금 NVIDIA L4T ML을 확인하면 "* TensorFlow 1.15"라고 쓰고 있었다...처음으로 움직였을 때는 확실히 2.x계가 되어 있었을 것이지만. 그렇다고 해도 모처럼 만든 Dockerfile이 아깝기 때문에, 학습의 기록으로서 기사에 남겨두기로 한다(opencv 무엇도 필요하고).

준비



Jetson nano에 swap을 추가하지 않으면 빌드에 실패했습니다. 6GB 정도의 스왑 파일을 만들어 둔다.
htps : // 코 m / 응 - 야마나카 / ms / d82996312 b333 9b2

Dockerfile



github에 올렸다.
htps : // 기주 b. 코 m / 누노 쿠키 / 지 츠 ぉ 그 _ 도 c 케 r_ 이런 rs
FROM nvcr.io/nvidia/l4t-tensorflow:r32.4.4-tf1.15-py3

RUN apt-get update
RUN apt-get install -y fonts-ipaexfont
RUN apt-get install -y libffi-dev
RUN apt-get install -y python-pip
RUN apt-get install -y python3-pip
RUN pip3 install -U pip
RUN pip3 install notebook
RUN pip3 install matplotlib
RUN pip3 install pandas
RUN pip3 install scipy
RUN pip3 install opencv-contrib-python

RUN mkdir /tf
RUN chmod 777 /tf

ADD jupyter_notebook_config.py /root/.jupyter/

CMD ["jupyter", "notebook"]

Dockerfile과 같은 위치에 jupyter_notebook_config.py를 준비한다.
Jupyter notebook의 암호는 jetsonnano로 설정되었습니다. 비밀번호를 변경하려면
여기 를 참고하면 좋다.

jupyter_notebook_config.py
c.NotebookApp.notebook_dir = '/tf'
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.password = u'argon2:$argon2id$v=19$m=10240,t=10,p=8$kDrfziXaxPvbrLZfP2oTKA$zSNR85lqmziWEVjx/ApauQ'    

여기까지 할 수 있으면 빌드
sudo docker build -t tensorflow:1 .

matplotlib, opencv 등의 빌드로 몇 시간이 걸립니다.

실행


sudo docker run -it --rm --runtime nvidia --network host tensorflow:1

시작시 -v 선택적으로 호스트 디렉토리와 docker 컨테이너의 /tf를 연결하면 작업 기록을 지우지 않아도 되지만, 그것은 docker의 기본 이야기이므로 할애

tensorboard는 Jetson nano 위에서 docker exec에서 실행.
sudo docker exec -it <container id> tensorboard --host 0.0.0.0 --logdir /tf/log --port 6006

주의



대량의 이미지 취급 10장 이후의 샘플은 그대로는 ResourceExhaustedError 가 나와 움직일 수 없는 경우가 있다.

움직였지만 멈췄다 피 c. 라고 r. 이 m / g4w 좋은 7V — NUNOKAWA Masato (@Nunocky) December 28, 2020


그 때는 배치나 에포크의 수를 조정해, GPU에 건네주는 데이터의 크기를 바꾸면 좋다.



심층 학습에서의 tensorflow 오류 "tensorflow.python.framework.errors_impl.ResourceExhaustedError: 2 root error(s) found. "