http://imagemagick.org/index.php 

$ display 

다양한 옵션들을 확인할 수 있다. 

Conda 버전이 너무 차이가 많이 나는 것 같아서 conda update를 해주려고 시도함

$ conda update --all

근데 내 개인 계정은 읽을 권한이 없다고 update가 제대로 진행되지 않았다.

EnvironmentNotWritableError: The current user does not have write permissions to the target environment.

그래서 권한 설정을 다시 해주려고 

$ sudo chmod 777 -R /anaconda3 

입력해주었지만 

() is not in the sudoers file. This incident will be reported. 라고 뜸.

하아 정말.. 역시 리눅스는 첩첩산중..

그래서 그냥 root 계정으로 들어가서 

# chmod 777 -R /anaconda3

# chmod 777 -R ~/.conda/

해 준 다음에 개인 계정으로 다시 와서

$ conda update -all 

해주었다. 

 

 

$ python3 -V

파이썬 버전 확인

$ conda --version

콘다 버전 확인

$ conda create --name 가상환경명 python=3.8

Proceed? Y

 

$ conda activate 가상환경명

가상환경 활성화

(가상환경) $ conda info

콘다의 정보 확인

(가상환경) $ conda list

가상환경에 어떤 패키지 설치되어있는지 확인

 

파이토치 공식 홈페이지로 가서 설치를 위한 command line 확인

(가상환경) $ nvidia-smi

내 cuda version 확인

내 cuda version보다 높지 않게 cuda의 버전을 입력

(가상환경) $ conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch

다양한 activation function python 으로 그리기

 

https://maelfabien.github.io/deeplearning/act/#

 

Activation Functions

Deep Learning with PyTorch

maelfabien.github.io

 

python3.8

 

1. 앞뒤 간격 한칸씩 주기

>>> import numpy as np
>>> x=np.arange(0,0.4,0.0008)

>>> np.savetxt('test.dat', x, fmt=' %.4f ')
>>> exit()

 

 

2. 앞뒤 특정 문자 채우기

>>> import numpy as np
>>> x=np.arange(0,0.4,0.0008)

>>> np.savetxt('test.dat', x, fmt='{:*^20}'.format('% .4f '))
>>> exit()

 

참고글

https://www.delftstack.com/ko/howto/numpy/python-save-and-load-numpy-array/

 

Python에서 NumPy 배열 저장 및로드

Python에서 NumPy 배열을 저장하고로드하는 3 가지 메서드, numpy.savetxt() 및 numpy.loadtxt() 함수, numpy.tofile() 및 numpy.fromfile() 함수, numpy.save() 및 numpy.load() 함수.

www.delftstack.com

 

https://docs.python.org/3/library/string.html#format-specification-mini-language

 

string — Common string operations — Python 3.9.6 documentation

string — Common string operations Source code: Lib/string.py String constants The constants defined in this module are: string.ascii_letters The concatenation of the ascii_lowercase and ascii_uppercase constants described below. This value is not locale-

docs.python.org

 

https://machinelearningmastery.com/command-line-recipes-deep-learning-amazon-web-services/

 

10 Command Line Recipes for Deep Learning on Amazon Web Services - Machine Learning Mastery

Running large deep learning processes on Amazon Web Services EC2 is a cheap and effective way to learn and develop […]

machinelearningmastery.com

 

참고한 글을 Amazon Web Services에서 딥러닝할때 사용할 수 있는 커맨드 라인에 대해서 소개하고 있지만

GPU 백그라운드 실행하는 방법은 개인 GPU머신에서 동일하게 사용해도 아무 문제 없다.

 

여기서 참고할만한 커맨드 라인은

 

4. Run Script on a Specific GPU on the Server 이다.

 

$ CUDA_VISIBLE_DEVICES=0 nohup python script.py > ./script.py.log </dev/null 2>&1 &

위의 경우에는 0번 GPU 사용하여 script.py 소스 코드를 실행하고 log를 동일한 디렉토리에 출력하는 경우이고

 

$ CUDA_VISIBLE_DEVICES=1 nohup python script.py > ./script.py.log &1 &

위의 경우에는 1번 GPU 사용하여 script.py 소스 코드를 실행하고 log를 동일한 디렉토리에 출력하는 경우이다.

 

링크되어있는 글들은 전반적으로 볼만하다.

물론 나는 저 커맨드 라인만 찾은거였지만...

yum명령어로 gnuplot을 설치하려고하니 가장 최신 버전 다운로드가 안되길래 그냥 공식홈페이지에 들어가서 가장 최신 gnuplot을 다운 받아서 설치하였다.

며칠 좀 됐다고 기억이 잘 안나는데 아마 root 계정으로 로그인해서 다운로드 받은 듯 하다.

설치하는 과정은 아래의 블로그를 참고하였다.

 

https://shlee1990.tistory.com/483

 

[Gnuplot] 온라인/오프라인 리눅스 (Linux) 환경에 따른 그누플롯 (Gnuplot) 설치 방법

 정보 업무명  : 온라인/오프라인 리눅스 (Linux) 환경에 따른 그누플롯 (Gnuplot) 설치 방법 작성자  : 이상호 작성일  : 2020-02-08 설  명 : 수정이력 :  내용 [개요] 안녕하세요? 웹 개발 및 연구 개

shlee1990.tistory.com

 

설치 과정 중에 

# make check 이 있는데

이게 gnuplot이 제대로 설치되었는지 확인해주는 테스트 절차가 있다.

실행해보면 gnuplot이 제공해주는 다양한 그래프 그림들이 나타나는데.. 매번 쓰는 기능만 쓰던 나에게는 gnuplot의 기능들이 그저 놀라울 뿐이었다.

그러면 데모파일들은 어디에 있을까

 

gnuplot 설치 압축 파일이 있는 디렉토리나 압축을 푼 디렉토리로 이동하자.

그리고 demo 디렉토리로 위치를 변경하자.

나 같은 경우에는 Downloads라는 디렉토리를 따로 만들어서 관리하니까 다음과 같은 위치에 굉장히 많은 demo파일들이 있는 것을 확인할 수 있었다.

 

/root/Downloads/gnuplot-5.4.2/demo

 

# ls *.dem | wc -l

 

해보면 대충 176개 정도되는 데모파일들이 나타나는 것을 확인할 수 있다.

 

여기서

# make check 

하면 실행되는 파일은

all.dem 이라는 파일로 모든 데모 파일들은 한번에 실행하는 스크립트 파일이다. 

 

gnuplot의 무궁무진한 기능들이 궁금하다면 demo 디렉토리에 있는 all.dem 파일을 좀 살펴보면 많은 도움을 받을 수 있을 것이다.

 

 

 

 

 

GPU 머신 새로 납품 받고서 느낀거는.. 어떤 엔지니어가 납품 하느냐에 따라 기능을 추가 하느냐 추가하지 않느냐의 차이가 크다는 것이다.

아무런 기능을 추가하지 않는다면 최대한 사용자 편의에 맞게 커스터마이즈 할 수 있지만, 기능 추가가 전혀 되어있지 않다면 나같은 리눅스세팅귀차니즘 인간은 하나부터 열까지 일일이 다 해줘야 하니까 정말 짱 귀찮음을 지속적으로 느끼게 된다... ㅡㅡ

 

https://gabii.tistory.com/entry/Ubuntu-vim-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%84%A4%EC%A0%95

 

[Ubuntu] vim 설치 및 설정

이번 포스팅은 우분투를 사용할 때 vi 대신 더욱 편하게 사용할 수 있는 vim 설치법 및 설정에 대해 다뤄보겠습니다. 리눅스나 유닉스를 처음 접했을 때, 가장 크게 직면하는 어려움은 아마 터미

gabii.tistory.com

 

일단 vim부터 설치한다.

# yum install vim

 

설치가 이루어지면 기능들을 추가해본다.

$ vi ~/.vimrc

 

기능이 추가된 이후에 적용시켜준다.

$ source ~/.vimrc

 

vim 위치를 확인해주자.

$ which vim

 

알리아스 설정해주자.

$ vi ~/.bashrc

 

아래와 같이 내용 추가해주자.

alias vi='/usr/bin/vim'

 

그러면 vi 편집기 실행할 때 마다 vim을 사용하게 된다.

 

새로 구축된 GPU(CentOS 7.*)로 기존 서버에 있는 파일 좀 옮기려고 했더니 

 

ssh: connect to host **.***.*.** port 22: Connection timed out
lost connection

 

이렇게 에러메시지가 발생하면서 자료 이동이 불가능했다.

 

이거 해결하려고 주말 밤에 시간 좀 썼는데 결국 해결을 못했다.

메일 보내서 답장 받고 알고보니 회사 정책상 ssh 22 포트는 차단되어있단다.

 

ㅠ-ㅠ...

 

특정 포트를 추가해줘야 하는데 예를 들어 1234라고 하겠다.

포트를 추가해주기 위해서 

 

#vi /etc/ssh/sshd_config

 

열어서

새로운 포트번호를 추가해주자.

 

Port 1234

 

저장한 뒤 나와서

# service sshd restart

 

그러면 에러 메시지가 발생한다.

 

Redirecting to /bin/systemctl restart sshd.service
Job for sshd.service failed because the control process exited with error code. See "systemctl shd.service" and "journalctl -xe" for details.

 

# journalctl -xe

에러 메시지를 자세히 출력해본다.

 

-- Unit sshd.service has finished shutting down.
Aug 02 20:29:03 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
-- Subject: Unit sshd.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit sshd.service has begun starting up.
Aug 02 20:29:03 localhost.localdomain sshd[65236]: error: Bind to port 1234 on 0.0.0.0 failed:
Aug 02 20:29:03 localhost.localdomain sshd[65236]: fatal: Cannot bind any address.
Aug 02 20:29:03 localhost.localdomain systemd[1]: sshd.service: main process exited, code=exite
Aug 02 20:29:03 localhost.localdomain systemd[1]: Failed to start OpenSSH server daemon.
-- Subject: Unit sshd.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit sshd.service has failed.
--
-- The result is failed.

 

그래서 찾아보니까 다음과 같이 해결해주면 된다.

출처: https://2734.tistory.com/25

 

ssh / port 수정

sshd port 수정 [CentOS 6.x] vi /etc/ssh/sshd_config Port 포트번호 service sshd restart 방화벽 해당port추가 vi /etc/sysconfig/iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 포트번호 -j..

2734.tistory.com

 

# setenforce 0

 

# getenforce

Permissive 라고 메시지 발생

 

# service sshd restart

Redirecting to /bin/systemctl restart sshd.service 라고 메시지 발생

 

# setneforce 1

 

방화벽 해당 port 추가하자

# firewall-cmd --permanent --zone=public --add-port=1234/tcp

 

그리고 방화벽 재시작하자.

# firewall-cmd --reload

 

커맨드 라인 상에서 방화벽 추가해준 설정은 

# vi /etc/firewalld/zones/public.xml

에 다 저장되어있다. 

 

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <source address="12.34.5.678"/>
  <source address="12.34.5.67"/>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <port protocol="tcp" port="1234"/>
</zone>

port 1234가 추가되어있는 것을 확인할 수 있다.

source address는 내가 이것저것 만지다가 저장된 것이다.

회사 내부 아이피니까 그냥 두어도 크게 상관 없을거라 생각되어서 그냥 두었다.

 

파일 이동해줄때 추가해준 포트로 이동시켜주자.

 

$ scp -P 1234 test.py 12.345.6.78:/home

 

GPU 머신 하나 쓰기가 이렇게 힘들다 ㅠ

 

참고로 이렇게 포트 변경하고 나면 원격 접속 프로그램으로 다시 접속 할 때 포트 번호 바꾸어서 접속 해야한다.

 

추가로 도움 많이 받은 블로그 주소 하나 링크 적어둔다.

https://uxgjs.tistory.com/162

 

리눅스(CentOS7) 서버에 방화벽(firewall)을 활용하여 특정 IP만 접근하게 하는 방법

회사 내부용으로 리눅스 서버로 돌릴 경우 특정사용자만 해당 서버에 접근 하도록 해야 할 필요가 있습니다. 여러가지 방법이 있겠지만 가장 간단한 방법은 방화벽으로 특정 IP외에는 모두 막아

ux.stories.pe.kr

https://www.lesstif.com/system-admin/rhel-centos-firewall-22053128.html

 

RHEL/CentOS 에서 방화벽(firewall) 설정하기

포트 추가/변경, IP 추가/변경는 --reload 옵션을 실행해야 반영됨.

www.lesstif.com

http://blog.plura.io/?p=4519 

 

CentOS 방화벽 사용방법

CentOS 5, 6 iptables 사용방법 CentOS 7 firewall 사용방법 CentOS 7 iptables 사용방법     iptables 사용방법   기본적으로 설치된 iptables를 사용하여 설정을 합니다. - 기본 SSH 인 22번 포트만 허용된 상태입니

blog.plura.io

 

 

 

1. 물리 CPU 개수 확인

 

$ grep "physical id" /proc/cpuinfo | sort -u | wc -l

2

 

즉, CPU가 2개 존재한다는 의미이다.

 

2. CPU 당 물리 코어 수 확인하기

 

$ grep "cpu cores" /proc/cpuinfo | tail -1

cpu cores : 16

 

즉, CPU당 물리 코어수가 16개라는 의미이다.

 

3. Hyper Threading 여부

 

$ cat /proc/cpuinfo | egrep 'siblings|cpu cores' | head -2
siblings        : 32
cpu cores       : 16

 

즉, Siblings  값이 Cpu cores수의 2배면, Hyper Threading이 활성화 된 것이다.

 

종합적으로 계산해보면 하나의 cpu에 물리 코어 수가 16개 인데 hyper threading으로 가상 32개가 되고, 물리 cpu 개수가 2개이니 총 64개의 cpu 개수가 확인되는 것이다. 

16(cpu 1개에 대한 물리 core 수) *2(hypter threading) = 32개 가상 core

32(cpu 1개에 대한 물리 core 수) *2(총 cpu 개수) = 64개 가상 core

 

4. CPU 코어 전체 개수

 

$ grep -c processor /proc/cpuinfo

64

 

동일하게 결과가 출력된다. 전체 가상 CPU 코어수가 64개 존재

 

참고 블로그 링크

https://letitkang.tistory.com/50

 

[리눅스] CPU 정보 확인

오늘은 리눅스의 cpu 정보에 대해 알아보겠습니다. 리눅스는 각종 정보들을 파일로 관리하고 있습니다. cpuinfo 파일에 cpu 정보들이 담겨져 있습니다. 명령어를 통해서 cpu 정보에 대해 알아보겠습

letitkang.tistory.com

https://sncap.tistory.com/738

 

Linux VM 정보 확인

linux 사용시 필요한 VM 확인을 Command [CPU] CPU 정보 확인  > cat /proc/cpuinfo CPU 코어 전체 개수 > grep -c processor /proc/cpuinfo         물리 CPU 수  > grep "physical id" /proc/cpuinfo..

sncap.tistory.com

https://brownbears.tistory.com/334

 

[Linux] CPU 개수 확인하기

일반적인 경우, 하이퍼스레딩에 의해 OS(윈도우, 리눅스 등)에서 코어 수가 실제 코어 수의 2배로 인식됨. 예를 들어 싱글코어는 코어 2개로, 듀얼코어는 4개로 인식 CPU 코어 전체 개수 # grep -c proc

brownbears.tistory.com

 

 

+ Recent posts