안쓰는 docker container를 삭제한다. 다만, 일시적으로 안쓰던 것도 삭제될 수 있다.

$ docker container prune

 

일정 시간 사용하지 않은 docker container를 삭제한다.

$ docker container prune --filter "until=2400h"

2400h : 사용한지 100일(24h x 100) 이상 지난 docker container를 모두 삭제한다.

 

이후 아래를 추가로 해주는 것도 좋다.

container와 연결이 없는 image를 삭제한다.

$ docker image prune -a

 

반응형

 

os.walk( dir )는 주어진 디렉토리( dir  ) 내의 모든 하위 디렉토리와 파일을 재귀적으로 탐색한다. 

os.listdir()가 주어진 디렉토리 내 정보만 가져오는 것과 대비된다.

 

os.walk 사용법

for (root, dirs, files) in os.walk(path_dir):  # path_dir : 탐색할 루트 폴더
    print("# root : " + root)  # 현재 폴더의 전체 경로

    if len(dirs) > 0:
        for dir_name in dirs:  # '현재' 폴더에 포함된 하위 디렉토리 명단.
            print("dir: " + dir_name)

    if len(files) > 0:  # 디렉토리가 아닌, '현재' 폴더에 포함된 파일 명단.
        for file_name in files:
            print("file: " + file_name)

 

 

반응형

'programming > Python' 카테고리의 다른 글

venv 가상환경  (0) 2024.08.21
파이썬 패턴  (0) 2024.06.12
파일, 디렉토리 관리  (0) 2024.06.12
DataFrame, Column name 변경  (0) 2020.09.06
DataFrame, indexing - loc, iloc  (0) 2020.09.05

Nvidia-docker 설치 시 오프라인, 외부망 접근 금지 등으로 인해서 pip install 이 불가능하여 수작업으로 설치해야하는 경우가 있다.

 

이 경우 아래와 같은 순서로 설치한다.

libnvidia-container1_1.13.5-1_amd64.deb
libnvidia-container-tools_1.13.5-1_amd64.deb

nvidia-container-toolkit-base_1.13.5-1_amd64.deb

nvidia-container-toolkit_1.13.5-1_amd64.deb

 

1) 기존 nvidia-docker dpkg를 삭제

# 설치된 패키지 검색
$ dpkg --list | grep nvidia
ii  libnvidia-container-tools  1.9.0-1  amd64 NVIDIA container runtime library (command-line tools)
ii  libnvidia-container1:amd64 1.10.0-1 amd64 NVIDIA container runtime library
ii  nvidia-container-toolkit   1.9.0-1  amd64 NVIDIA container runtime hook
...

# 출력된 리스트 중 불필요한 구 파일 삭제
# dpkg -r [패키지명]
$ dpkg -r libnvidia-container-tools
$ dpkg -r libnvidia-container1:amd64
$ dpkg -r nvidia-container-toolkit

 

2) 순서대로 설치

$ dpkg - i libnvidia-container1_1.13.5-1_amd64.deb
$ dpkg - i libnvidia-container-tools_1.13.5-1_amd64.deb
$ dpkg - i nvidia-container-toolkit-base_1.13.5-1_amd64.deb
$ dpkg - i nvidia-container-toolkit_1.13.5-1_amd64.deb

 

3) [필수] 도커 서비스 재가동 (docker service restart)

$ systemctl restart docker

 

※ 참고사항

- 순서가 바뀌거나 더 필요한 게 있다면 하기와 같이 친절히 표기가 되니, 맞추어 설치한다.

   dpkg: dependency problems prevent configuration of nvidia-container-toolkit:
    nvidia-container-toolkit depends on nvidia-container-toolkit-base (= 1.13.5-1); however:
    Package nvidia-container-toolkit-base is not installed.

 

- 버전에 따라서, (1.10 이하) toolkit-base 설치가 필요없다. (toolkit-base 패키지도 없다.)

 

- 아래는 설치 안해도 괜찮다.

   nvidia-container-runtime_3.13.0-1_all.deb

   nvidia-docker2_2.13.0-1_all.deb

 

- nvidia-docker 설치 패키지(deb) 받는 곳

https://mirror.cs.uchicago.edu/nvidia-docker/libnvidia-container/stable/ubuntu20.04/amd64/

 

Index of /nvidia-docker/libnvidia-container/stable/ubuntu20.04/amd64/

 

mirror.cs.uchicago.edu

 

반응형

하기처럼 docker 이미지를 출력하면 docker repository 와 tag가 <none>으로 출력되는 경우가 있다.

$  docker images
REPOSITORY                                    TAG                                   IMAGE ID       CREATED        SIZE
<none>                                               <none>                              4d78d3e67cb5   1 months ago   30.8GB

sys                                                      v1.4                                   d38be44fe367    1 weeks ago     20.8GB

    ... ...

opt                                                      v1.1                                   a38be45fe457     2 weeks ago     10.1GB

 

<none>으로 표기된 이미지를 삭제하지 않고 이름을 붙일 필요가 있다면, 하기 명령으로 repository와 tag를 부여할 수 있다.

docker image tag [image_id] [repository name:tag]

 

사례)

$ docker image tag 4d78d3e67cb5  test:v1.0

$ docker images

REPOSITORY                                    TAG                                   IMAGE ID       CREATED        SIZE
test                                                      v1.0                                   4d78d3e67cb5   1 months ago   30.8GB

sys                                                      v1.4                                   d38be44fe367    1 weeks ago     20.8GB

 

해당 원인은 여러 개가 있는데 주로 빌드 할 때, 이미 존재하는 레포지토리:태그명과 중복된 상태로 빌드하거나 이미지가 제대로 빌드 되지 않아서 발생하며 Dangling Image라고 부른다.

위처럼 repository와 tag 명을 강제로 붙여줄 수도 있으나 삭제하는 게 좋을 경우가 많다. 이 경우 하기 명령으로 삭제 한다.

아래 세 개 명령은 약간으 ㅣ차이는 있으나 모두 Dangling Image를 삭제하게 된다.

 

1) $ docker iamge prune

2) docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

3) $ docker rmi $(docker images -a|grep "<none>"|awk '$1=="<none>" {print $3}')

 

 

반응형

 

모바텀은 매우 편한 터미널이지만 종종 세션이 끊어지거나 연결이 죽는 현상(freezing)이 발생한다. 모바텀 세션이 끊기거나 죽는 현상은 2개이다.

  - 세션이 죽거나 화면이 멈추는 현상 (freezing) 

  - 사용이 오래되어 세션이 끊기는 현상 (stopped session)

 

1. 세션이 죽거나 화면이 멈추는 현상 (freezing) 

이것은 상당히 쓰기 불편한데, 하단과 같이 처리하면 해결된다.

 

모바텀 메뉴 Settings → Configuration →  SSH (tab) → GSSAPI Kerberos 체크 제거

 

리눅스에서 종종 있는 문제로 GSSAPI kerberos 가 활성화되어 있으면 keberos DNS에 질의를 하는데 DNS 응답이 늦어질 경우 접속지연이 발생한다. 이로 인해 간헐적으로 접속지연이 발생하거나 화면이 멈추는 현상이 발생한다.

 

만약 서버에서 설정하고 싶다면

vi /etc/ssh/sshd_config

GSSAPIAuthentication no

 

을 입력하고 저장한다.

 

2. 사용이 오래되어 세션이 끊기는 현상 (stopped session)

이것은 사실 정상적인 애플리케이션의 처리현상이다. 다만, 역시 불편하다.  하기와 같이 나올 때 세션이 끊긴 것이다.

 Network error: Software caused connection abort
 ─────────────────────────────────────────────────────
 Session stopped
     - Press <Return> to exit tab
     - Press R to restart session
     - Press S to save terminal output to file

 

모바텀 메뉴 Settings → Configuration →  SSH (tab) → SSH keepalive 체크 추가

(버전에 따라 다른데, Fix connection issues 체크 버튼이 보이면 추가로 체크해야 한다.)

 

반응형

cd 가상환경을 설치할 경로

 

python -m venv 가상환경이름

 

source 가상환경이름/Scripts/activate

 

deactivate

 

설치된 패키지 리스트 txt 파일로 변환

pip freeze > requirements.txt

 

변환된 txt 파일로 패키지 설치하기
pip install -r 파일이름.txt

반응형

'programming > Python' 카테고리의 다른 글

os.walk - 하위 디렉토리 포함 모든 파일 탐색  (0) 2025.04.10
파이썬 패턴  (0) 2024.06.12
파일, 디렉토리 관리  (0) 2024.06.12
DataFrame, Column name 변경  (0) 2020.09.06
DataFrame, indexing - loc, iloc  (0) 2020.09.05

잘 쓰여진 데이터 분석 관련 글

 

https://brunch.co.kr/@data/10

 

데이터 분석을 위한 5단계 절차

Part1. 공공데이터 분석의 개념 | 이번 글에서는 공공분야 데이터 분석 절차를 설명한다. 필자의 경험상, 공공데이터 분석은 통상 5가지 단계에 의하여 이루어진다. 이 단계는 폭포수 모델 처럼

brunch.co.kr

 

반응형

우분투 Bash 쉘스크립트 작성 시 if 문 내에서 연산자 ( ==, <  등)을 사용할 때 No such file or directory 오류가 나는 경우에 해결방법은 아래와 같다.

 

□ 사례

text.sh

var=100
if [ $var < 200 ]; then
     ... ...

else 
     ... ...
fi

 

실행 결과 

$ bash test.sh
test.sh: line 3: 200: No such file or directory

 

bash 쉘(POSIX 쉘) 가이드에 따르면 하기와 같이 "<" 연산자 대신 "-lt"로 수정해야 제대로 동작한다.

[ "$var" -lt 200 ]

 

각 사용법은 하기와 같다.

 

□ POSIX 쉘 가이드 : 상황별 "<" 연산자 사용 방법

   - ※ [   공백   "$var"   -lt   200   공백   ] 처럼 '공백' 이 있어야 한다.

문법 대상 (상황) 주의 사항
[ "$var" -lt 200 ] 숫자 비교 POSIX shell 전체
[ "$var" \< 200 ] 문자 비교 POSIX shell 전체
[[ $var -lt 200 ]] 문자 비교 bash, ksh 에서만 동작
(( $var -lt 200 )) 숫자 비교 bash, ksh 에서만 동작
(( var < 200 )) 숫자 비교, var를 $ 없이도 변수로 인식함 bash, ksh 에서만 동작

 

 

□ 참고

비교 연산자 사용법 의미
== [ $A == $B ] 같다
!= [ $A != $B ] 같지 않다
> [ $A > $B ] 크다
>= [ $A >= $B ] 크거나 같다
< [ $A < $B ] 작다
<= [ $A <= $B ] 작거나 같다
&& [ $A && $B ] 논리연산 AND, 둘 다 모두 True 이면 True
|| [ $A || $B ] 논리연산 OR, 둘 중 하나가 True 이면 True

 

비교식 사용법 약어 유래 의미 비고
-z [ -z $A ]   공백이면 True $A == ""
-n [ -n $A ]   공백이 아니면  True $A != ""
-eq [ $A -eq $B ] equal to 같다 $A == $B
-ne [ $A -ne $B ] not equal to 같지 않다 $A != $B
-ge [ $A -ge $B ] greater than or equal to 크거나 같다 $A >= $B
-gt [ $A -gt $B ] greater than  크다 $A > $B
-le [ $A -le $B ] less than or equal to 작거나 같다 $A <= $B
-lt [ $A -lt $B ] less than 작다 $A < $B
-a [ $A -a $B ]   논리연산 AND, $A, $B 모두 True이면 True $A && $B
-o [ -o $A ]   논리연산 OR,  $A, $B 중 하나가 True이면 True $A || $B

 

파일 비교 사용법 의미
-f [ -f $A ] 파일  (디렉토리나 다른 형태의 파일은 False)
-d 이하 동일 디렉토리
-L   심볼링 링크 
-r   사용자가 대상에 읽기 권한(read)을 가지고 있으면 True
-w   사용자가 대상에 쓰기 권한(write)을 가지고 있으면 True
-x   사용자가 대상에 쓰기 실행(execution)을 가지고 있으면 True
-s   파일 크기가 0 이 아니면 True
-S   소켓
-nt [ $A -nt $B] $A 파일이 $B 보다 최신이면 True
-ot [ $A -ot $B] $A 파일이 $B 보다 오래되면 True
-ef [ $A -ef $B] 동일 파일이면 True

 

반응형

'Linux' 카테고리의 다른 글

docker repository <none>  (0) 2024.10.04
모바텀(MobaXterm) 세션 죽는 현상 개선  (0) 2024.09.10
tar, tar.gz 압축 및 해제  (2) 2024.07.03
Docker 중단없이 나오기(Detach)  (2) 2024.02.25
Ubuntu 버전 확인  (0) 2024.02.24

□ tar

- tar 압축

$ tar -cvf   "압축 파일명.tar"    "폴더 or 파일"

   e.g. tar -cvf target.tar source.txt

 

- tar 압축해제

$ tar -xvf "파일명.tar"

   e.g. tar -xvf target.tar

 

□ tar.gz

  기존 tar 명령어에 -z 옵션(option) 추가

 

- tar.gz 압축

$ tar -zcvf   "압축 파일명.tar"    "폴더 or 파일"  

   e.g. tar -cvf target.tar.gz source.txt

 

- tar.gz 압축 해제

$ tar -zxvf   "압축 파일명.tar.gz"

   e.g. tar -zxvf target.tar

주요 명령 옵션(command options)

options 설명
 -c  압축
 -x  압축 해제
 -v  작업진행 상태를 화면에 출력
 -f  파일명 지정
 -z  gzip 압축 또는 해제

 

반응형

하기 글들을 읽을 때 도움이 되는 용어 설명

ㆍall-reduce communication : 각 노드에서 서로 다르게 계산 중인 모든 값들을 가져와서 합산한 후 다시 각 노드로 전달하는 전체를 맞추는 통신 방식으로 모델 학습에서는 분산 학습 시 Data parallel하게 진행되는 여러 GPU에서 동일한 모델 파라미터에 각기 다른 입력 데이터로 서로 다른 그래디언트들이 계산 되는데 이를 다 가져와서 더한 후 해당 결과값을 다시 여러 GPU 상에 존재하는 모델 파라미터에 똑같이 업데이트하기 위한 통신 방법을 의미한다.

 

 

 

Megatron LM 논문을 잘 번역하고 해석한 글

https://learn-ai.tistory.com/entry/Paper-Review-Megatron-LM-Training-Multi-Billion-Parameter-Language-Models-Using-Model-Parallelism

 

[Paper Review] Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism

Summary 최근 연구된 language modeling 논문에서는 학습되는 모델의 크기가 커짐에 따라 NLP tasks에 적용했을 때의 성능이 나아질 것이라고 말한다. 하지만, 큰 모델은 메모리 한계와 같은 문제로 학습

learn-ai.tistory.com

 

Nvidia 블로그, 당연히 참고가 필요한 곳

https://blogs.nvidia.co.kr/blog/scaling-language-model-training-to-a-trillion-parameters-using-megatron/

 

자연어 처리 혁신 모델훈련 프레임워크 NVIDIA Megatron 완전 해부(1) | NVIDIA Blog

자연어 처리(NLP, Natural Language Processing)는 최근 몇 년간 대규모 계산이 쉽게 이뤄지고 데이터세트 용량이 커지면서 빠르게 발전했습니다.

blogs.nvidia.co.kr

 

반응형

+ Recent posts