말 그대로다.

pytorch에서 tensor로 저장되는 weight 값을 저장하고 싶었다. 그것도 줄임표시가 없이 전체 저장!!

print를 하면 ... 표시로 나오고

파일로 저장해도 ... 로 나오고..

아래 글처럼, numpy 배열을 뿌리는 옵션을 찾았지만

tensor에는 적용되지 않았다.

구글링으로 set_printoptions 를 찾았고, 아래 numpy 옵션 처럼, 라인 등 지정이 가능하다.

파일로 저장하는 부분도 함께 찾았는데, 자세한 부분은 아래 링크 참조하여 상황에 맞게 수정하여 사용.

import pandas as pd

# profile 부분에서 설정 가능
# full : 전체 출력 설정
torch.set_printoptions(profile="full")

state_dict = model.state_dict()

for key in state_dict:
	# 여긴 그냥 key 값으로 내용 출력해주는 부분
	# 이었는데 아래 처럼 파일로 씀.
	...

df = pd.DataFrame.from_dict([state_dict])
df.to_csv('file.txt', header=False, index=True, mode='a')

tensor 출력 부분 출처 : https://pytorch.org/docs/stable/generated/torch.set_printoptions.html#torch.set_printoptions

파일 저장 부분 출처 : https://stackoverflow.com/questions/36965507/writing-a-dictionary-to-a-text-file

로그도 로그지만

그저, 파일에 쓰고 싶었다.

그래서 찾아봤는데 없었다. 아니 못찾았다.

그래서 또 찾아봤다.

np.set_printoptions() 함수 활용하면 된단다.

이 옵션만 위에 추가하면 된다. 옵션 잘 챙겨서..

threshold 옵션 값으로 np.inf (무한)사용할수 도 있으나 처리 과정에서 오류발생할 수도 있다고 하여

api에서 말하는 sys.maxsize 사용함. 숫자로 출력 개수 지정도 가능함. 디폴트 1000.

참조 : https://numpy.org/doc/stable/reference/generated/numpy.set_printoptions.html

import sys
import numpy as np

# numpy 값. 줄임없이 모두 표시하는 옵션
np.set_printoptions(threshold=sys.maxsize)

윈도우에서 리눅스용 파이썬 패키지 한번에 파일로 받기

윈도우 머신에서 사용하던 패키지를 리눅스 머신으로 옮겨볼려고 찾아봄.

 pip freeze > requirements.txt

requirements.txt 받아서 (파일명은 상관없음)

전체 받거나

pip download -r .\requirements.txt --platform manylinux1_x86_64 --only-binary=:all: --no-binary=:none:

하나씩 받거나 여러개 나열하여 받거나.. 

pip download --platform manylinux1_x86_64 --only-binary=:all: --no-binary=:none: [패키지명] [패키지명] ...

패키지명 하나씩 적어주는게 이게 파일 하나씩 받아줌.

위에 소스거는 기존에 설치된 것들에서 캐시 어쩌쩌고 하는 바람에 옮길 수 있는 파일 찾기가 어려움

requirements.txt 받을 때 아예 이름만 리스트로 받아서 에디트플러스 같은데서 한줄로 만든담에 붙여 넣는게 편할 듯.

그러고 나서 받은 파일을 리눅스로 옮기고 파일을 설치.

# requirements.txt 토대로 설치하기
pip install --no-index --find-links=. -r requirements.txt

# 하나씩 설치 또는 여러개 설치
pip install --no-index --find-links=. [패키지명] [패키지명] ...

 

파이 토치 + CUDA(v11.3) 설치 후 

CMD 창에서 직접 파이썬을 호출하여

CUDA 사용 여부를

확인해보면 True를 뱉어내는데..

꼭, 주피터 노트북에서

CUDA 사용 여부를 다시 확인하면

계속 False를 뱉어내고,

GPU 장치 정보를 가져오려고 하면

"Torch not compiled with CUDA enabled" 메시지가 나온다.

계속 가상환경을 지웠다 만들었다가...

파이토치도 지웠다 다시 설치했다를 반복했다가...

에효,, 암튼 계속되는 구글링...

결국 해결한 방법은 

Conda 설치가 아닌 Wheel 방식(pip) 설치.

아래 명령어로 파이토치랑 CUDA 버전 지정해서 설치함.

pip3 install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio===0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

아래와 같이 정상적으로 파이토치 CUDA 연동이 되는 것을 확인함.

 

진짜. 고생고생 개고생.. ㅡㅡ;;;;

주피터 노트북 기본 실행 폴더 위치 변경

cmd에서 jupyter notebook --generate-config 입력 후 실행

실행하면 config 파일 생성 됨.

C:\Users\사용자명\.jupyter\ 위치로 이동하여 보면 jupyter_notebook_config.py 생성 된 것을 확인

jupyter_notebook_config.py 텍스트 에디터로 오픈 후

#c.NotebookApp.notebook_dir='' 문장을 찾아서

'' 부분에다가 새로운 실행 위치 지정.

주석 (#) 제거 후 주피터 노트북 재실행.

 

주피터 노트북 실행시 에디터 폰트 변경

C:\Users\사용자명\.jupyter\으로 이동하여 폴더명 custom 으로 폴더 생성

custom.css 파일 생성 후

아래 내용 작성함.

폰트는 대체 폰트용으로 2개 더 추가함.

32인치 모니터 세로로 돌려서 작업시 기준임.

작성하고 주피터 노트북 재실행.

div.CodeMirror,
div.CodeMirror pre {
 font-family: D2Coding, Bitstream Vera Sans Mono, Consolas, monospace !important;
 font-size: 14pt;
 line-height: 140%;
} /* 코드 입력창 */

.output_result pre {
  font-family: D2Coding, Bitstream Vera Sans Mono, Consolas, monospace !important;
  font-size: 14pt;
  line-height: 140%;
} /* 출력 결과 */

.output_stdout pre {
  font-family: D2Coding, Bitstream Vera Sans Mono, Consolas, monospace !important;
  font-size: 14pt;
  line-height: 140%;
} /* 출력 결과 */


.text_cell_render {
  font-family: D2Coding, Bitstream Vera Sans Mono, Consolas, monospace !important;
  font-size: 14pt;
} /* 마크 다운 */


table.dataframe {
  font-family: D2Coding, Bitstream Vera Sans Mono, Consolas, monospace !important;
  font-size: 14pt;
} /* DataFrame 출력 결과 */

 

주피터 노트북 실행시 에디터 셀 크기(폭) 조정

위에서 작성한 custom.css 파일 상단에 아래 내용 추가 (폭을 100% 사용한다는 의미임)

.container { width:100% !important; }

 

참고

https://cow97.tistory.com/12

https://baem1n.dev/2021/01/27/SETTING-JUPYTER-01/

https://blog.naver.com/tutumd96/221505445007

https://optimizing.tistory.com/9

+ Recent posts