1. ubuntu - ip 확인(내부의 ip주소)
> ip a
2. SSH server설치
# ssh 설치
> sudo apt update
> sudo apt install openssh-server
# ssh 상태 확인
> sudo systemctl status ssh
# ssh 실행
> sudo systemctl start ssh
# ssh 중지
> sudo systemctl stop ssh
3. SSH server port 확인
# ssh port 확인 (실제 서비스되고 있는 port 확인)
> sudo ss -tulpn | grep ssh
4. 우분투 방화벽 설정
# 우분투 방화벽 설정 해제
> sudo ufw allow ssh
5. SSH server 연결
# ssh 연결 (우분투에서 바로 해봄)
> sudo ssh username@내부_ip_address -p sshportnumber
6. 공유기(iptime) 포트포워딩
# iptime 접속
chrome: 192.168.0.1 ->login/pw
# Port forwarding
Advanced Setup->NAT/Routing->Port Forwarding
Internal IP, External port, Internal port값을 설정(실제 서비스되고 있는 port번호)
7. window powershell 접속(원격)
# ssh 연결
> ssh username@외부_ip_address -p sshportnumber
참고 자료
ss 노트북에서 torchserve용 mar파일 작성
답글삭제# SS 노트북 (Ubuntu Linux 18.04)
43 cd PycharmProjects/
44 cd torchserve_example/
# 이미 만들어져 있는 mar파일을 실행
45 conda activate py38
47 torchserve --start --model-store model_store --models poop_classifier.mar --ts-config myconfig.properties
49 torchserve --stop
# mar 파일을 다시 만들어 실행해 봄
50 torch-model-archiver --model-name poop_classifier --model-file poop_model2.py --version 1.0 --serialized-file poop_resnet18_best0928.pt --extra-files index_to_name.json --handler poop_handler.py
# 생성된 mar 파일을 model_store폴더로 이동
51 torchserve --start --model-store model_store --models poop_classifier.mar --ts-config myconfig.properties
84 curl http://192.168.0.45:8080/predictions/poop_classifier -T Image38.jpg
52 torchserve --stop
*** Torchserve 실행 ***
답글삭제conda create -n py38 python==3.8 # 가상 환경 생성
conda activate py38
cd serve # 다운 받은 serve 폴더(torchserve)로 들어감
# torchserve dependencies설치 시 오류 방지를 위해 미리 설치
conda install -c conda-forge packaging
conda install -c anaconda protobuf
conda install -c anaconda sympy
# 필요한 lib 설치
# python 버전별로 1회만 설치되는 것 같음
# [Debug Report] 3.8버전 가상환경 하나 만들고, 설치, 실행 후, 같은 버전, 다른 이름의 가상환경을
# 생성하고 설치하면 안됨. 3.9버전 가상환경 만들고, 다시 시도하면 이번에는 실행 성공
python ./ts_scripts/install_dependencies.py
# 추가로 필요한 lib
conda install torchserve torch-model-archiver -c pytorch
# 여기서부터는 테스트
cd ..
>torch-model-archiver --model-name poop_classifier --model-file poop_model2.py --version 1.0 --serialized-file poop_resnet18_best0928.pt --extra-files index_to_name.json --handler poop_handler.py
>mv poop_classifier.mar model_store
>torchserve --start --ncs --model-store model_store --models poop_classifier.mar --ts-config myconfig.properties
*** Docker 설정 및 Dockerfile로 나만의 image 만들기 ***
답글삭제> 내컴(windows)에서 ssh 이용하여, 서버로 접속.
mobaXTerm 툴을 사용함
> docker images # 현재 설치된 이미지 리스트 확인
> docker pull pytorch/pytorch # 가장 많이 다운된 pytorch image
hub.docker.com의 explorer에 가서 pytorch등을 넣고 이미지 검색 가능
docs.docker.com의 reference에 가면 docker명령 확인 가능
> docker images # 다운된 이미지 확인
> docker run -it --rm --gpus all pytorch/pytorch # gpu를 사용해서 실행되는지 확인
Container로 들어가면 python치고, import torch, torch.cuda.is_available()로 확인
> exit로 빠져 나옴
# 현재 작업 폴더에서 Dockerfile 이름의 파일 만듬. gedit를 사용함
# gedit 사용하여 아래 페이지의 Dockerfile 작성
> docker build -t vislab/torch . # 현 폴더의 Dockerfile을 이용하여 새로운 image생성
> docker images # 생성된 이미지 확인
# 잘못 생성했으면
> docker rmi image-id 또는 docker rmi -f image-id로 제거
# host의 test폴더와 container의 /app폴더를 연결하고, gpu를 사용하는 container 생성
> docker run -it --rm -v /home/vislab/Downloads/test:/app --gpus all vislab/torch
% container로 들어가면,
% python -> import torch, cv2, sklearn, pandas, matplotlib, git, tensorboard 등이 되는것 확인
*** Dockerfile ***
답글삭제d:\2023\poop_up에 있음
FROM pytorch/pytorch:latest
# Remove any third-party apt sources to avoid issues with expiring keys.
RUN rm -f /etc/apt/sources.list.d/*.list
#RUN apt-get update
#RUN apt-get -y install libgl1-mesa-glx
# Install some basic utilities
# 명령행은 하나의 layer를 형성하기 때문에 몰아서 한번에 설치
RUN apt-get update && apt-get install -y \
libgl1-mesa-glx \
curl \
ca-certificates \
sudo \
git \
bzip2 \
libx11-6 \
&& rm -rf /var/lib/apt/lists/*
RUN conda update -n base -c defaults conda
RUN pip install jupyter && \
pip install scikit-learn && \
pip install matplotlib && \
pip install pandas && \
pip install tensorboard
RUN conda install -c conda-forge opencv
# Create a working directory
RUN mkdir /app
WORKDIR /app
# Create a non-root user and switch to it
# su로 들어가기 위해 sudo su
RUN adduser --disabled-password --gecos '' --shell /bin/bash user \
&& chown -R user:user /app
RUN echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-user
USER user
# All users can use /home/user as their home directory
ENV HOME=/home/user
RUN chmod 777 /home/user
*** docker image save and load ***
답글삭제> docker save -o vislab_torch.tar vislab/torch # vislab/torch이미지를 vislab_torch.tar파일로 저장
> docker load -i vislab_torch.tar # tar 파일을 다시 로드
*** Torchserve Docker ***
답글삭제# Docker 설치 (torchserve 용)
56 sudo snap install docker
59 sudo chmod 666 /var/run/docker.sock # 권한 설정
60 docker pull pytorch/torchserve # BASE 이미지 다운: torch/torchserve:latest (3.66Gb)
61 docker images
62 cd serve/docker
63
64 nvidia-smi # cuda 버전 확인
66 ./build_image.sh -b master -bt production -g -cv cu117 # 새로운 도커 이미지 생성 명령
66 docker images # 생성된 *NEW* 이미지 확인: torch/torchserve:latest-gpu (7.55Gb)
67 cd ../..
# 도커 실행: Container 생성
68 docker run --rm -it -p 8080:8080 -p 8081:8081 -v $PWD/model_store:/model_store pytorch/torchserve:latest-gpu torchserve --model-store=/model_store
69 curl http://127.0.0.1:8080/ping
70 curl http://127.0.0.1:8081/models
73 cd model_store/
# Docker로 딥러닝 모델 mar파일을 업로드함
80 curl -X POST "http://localhost:8081/models?initial_workers=2&url=poop_classifier.mar"
81 curl http://127.0.0.1:8081/models
83 cd ..
# 이미지 보내서 결과 확인
84 curl http://192.168.0.45:8080/predictions/poop_classifier -T Image38.jpg
# 후 처리
90 docker ps # 실행 중인 Container 확인
91 docker stop d86c7cdfaab2 # stop container gracefully
92 docker kill d86c7cdfaab2 # stop container strongly