저번에는 인스턴스를 AWS상에서 구동시키는 것을 알아보았습니다.

 

이번에는 우리가 흔히 이야기하는 CLI(Command Line Interface)상에서 인스턴스에 접속하여 인스턴스를 직접 사용해보도록 하겠습니다.

 

OS별로 접속할 수 있는 방법이 다릅니다.

 

Linux계열-

      의외로 가장 간단합니다.

      ssh -i [*.pem이 들어있는 주소] ubuntu@[인스턴스 ip 주소]

      로 치면 접속이 됩니다.

      여기서 대괄호 안에 있는 내용은 적당하게 바꿔주셔야 합니다. 예를들어 ssh -i ~/.ssh/asdf.pem ubuntu@11.22.33.44 같은 식입니다.

      인스턴스 ip 주소는 저번 포스팅에서 만들어서 인스턴스에 붙였던 탄력적 ip 입니다.

      @ 앞에가 ubuntu인 것은 저번 포스팅에서 만든 인스턴스의 OS가 ubuntu이기 때문입니다.

 

Mac계열-

      Linux계열과 거의 비슷하지만 몇가지 팁이 있습니다.

      보통 *.pem파일은 .ssh 폴더에 넣어서 보관하게 되는데, mac의 경우 GUI상에서 .ssh폴더를 찾기가 쉽지 않습니다. 여기서 Finder 상에서 디렉토리를 직접 입력할 수 있는 방법이 있습니다. 먼저 [command+shift+g]를 누르면 직접 디렉토리를 키보드로 작성할 수 있는 창이 새로 열리게 되는데 여기서 [~/.ssh]라고 치게 되면 .ssh 폴더로 finder가 이동하게 됩니다. 여기서 *.pem 파일을 옮기고, mac의 terminal 창에 linux와 마찬가지로

      ssh -i ~/.ssh/[pem이름].pem ubuntu@[인스턴스 ip 주소] 를 쳐 주시면 접속이 됩니다.

      여기서 대괄호 안에 있는 내용은 적당하게 바꿔주셔야 합니다. 예를들어 ssh -i ~/.ssh/asdf.pem ubuntu@11.22.33.44 같은 식입니다.

      인스턴스 ip 주소는 저번 포스팅에서 만들어서 인스턴스에 붙였던 탄력적 ip 입니다.

      @ 앞에가 ubuntu인 것은 저번 포스팅에서 만든 인스턴스의 OS가 ubuntu이기 때문입니다.

 

Windows계열-

      사실 접속 방법이 가장 어렵습니다. 방법도 복잡하구요...

      Windows에서는 리눅스계열처럼 CLI자체로 접속할 수 있는 방법은 없고 PuTTY라는 프로그램을 따로 설치하여 진행하여야 합니다.

      PuTTY 프로그램은 https://www.chiark.greenend.org.uk/~sgtatham/putty/에서 다운로드 받으실 수 있습니다.

      1) PuTTY를 설치합니다.

      2) PuTTY프로그램은 .pem파일 형식을 지원하지 않기 때문에 .ppk파일 형식으로 변환해 주어야 합니다. 이를 위해 윈도우즈 검색창에 PuTTYgen을 검색하여 실행합니다.

      3) 생성할 키 유형(Type of key to generate)에서 RSA를 선택합니다. 여담으로 RSA는 공개키 방식의 암호화 알고리즘으로 Rivest, Sharmir, Adleman 세 명의 이름을 따서 RSA 알고리즘으로 부릅니다.

          *혹시 RSA가 보이지 않는 경우 PuTTY 버전을 확인해주시기 바랍니다. 최신형의 PuTTY가 아닐 수 있습니다. 이 경우 SSH-2 RSA로 선택하면 되긴 하지만 앞으로를 위하여 최신버전을 사용하는 것이 좋을 것 같습니다.

      4) 화면 중간의 버튼들 중 Load버튼을 누릅니다. 기본적으로 .ppk파일만이 새로운 창에서 나타나므로 파일이름 옆의 PuTTY Private Key Files (*.ppk) 라고 나와있는 드랍다운 박스를 눌러 All Files (*.*)을 눌러 .pem 파일을 찾아서 열기를 누릅니다.

      5) 여기서 아무것도 건드리지 않고 Load 아래있는 Save private key버튼을 눌러줍니다. 암호를 걸지 않았다는 경고가 뜨면 그냥 yes를 눌러 암호 걸지 않고 진행 합니다.

      6) 이후 저장할 위치가 나오면 적당한 위치를 선택한 뒤 ppk파일의 이름을 입력하고 저장을 누릅니다.

      이로써 PuTTY로 SSH접속을 하기 위한 ppk 파일을 생성하는 것을 마쳤습니다. 그러나 사실 PuTTY로 리눅스 시스템에 접속하기 위해서는 앞으로 더 많은 과정이 남았습니다...

      1) 이번에는 PuTTY를 켜주세요.

      2) 켜자마자 나오는 Host name 란에 ubuntu@[인스턴스 ip 주소]를 써 줍니다. 여기서 인스턴스 ip 주소는 저번 포스팅에서 인스턴스를 만든뒤 붙여주었던 탄력적 아이피의 주소입니다.

          *여기서 ubuntu는 '사용자 이름'인데 저번에 만들었던 인스턴스가 ubuntu였기 때문에 이렇게 바로 사용하면 됩니다. 그러나 다른 AMI를 사용하시는 경우에는 username이 달라집니다.

               아래는 AWS 홈페이지에서 가져온 내용입니다.

                    Amazon Linux 2 또는 Amazon Linux AMI의 경우 사용자 이름은 ec2-user입니다.
                    Centos AMI의 경우 사용자 이름은 centos입니다.
                    Debian AMI의 경우 사용자 이름은 admin 또는 root입니다.
                    Fedora AMI의 경우 사용자 이름은 ec2-user 또는 fedora입니다.
                    RHEL AMI의 경우 사용자 이름은 ec2-user 또는 root입니다.
                    SUSE AMI의 경우 사용자 이름은 ec2-user 또는 root입니다.
                    Ubuntu AMI의 경우 사용자 이름은 ubuntu입니다.
                    ec2-user 및 root를 사용할 수 없는 경우 AMI 공급자에게 문의하십시오.

      3) 그 옆에 칸인 Port가 22로 제대로 적혀있는지 확인해주십시오.

      4) Connection type 에서 SSH를 선택해 주시면 첫 화면에서 할 일은 다 끝났습니다.

      5) 이후 왼쪽의 디렉토리 구조에서 Connection>SSH옆의 +단추>Auth를 차례대로 클릭해줍니다.

      6) 화면의 오른쪽 중간 쯤에 있는 Browse를 클릭하고 .ppk 파일을 찾아준 뒤 열기를 눌러줍니다.

      7) 모든 세팅이 끝났습니다. 여기서 바로 PuTTY 창 맨 아래에 있는 Open을 선택하면 인스턴스에 연결이 됩니다. 그러나 이 모든 과정을 매번 하기엔 귀찮으므로 현재 설정상태를 저장할 수 있습니다. 왼쪽 디렉터리 Session을 클릭하면 중간에 Save Sessions가 있습니다. 여기에 이름을 지어주고 오른쪽 중간의 Save버튼을 누르면 지어준 이름대로 목록에 항목이 생성되는 것을 보실 수 있습니다. 다음부터는 PuTTY를 연 뒤 이 항목만 더블클릭하면(혹은 항목 선택 후 오른쪽의 Load 클릭 후 Open클릭) 바로 AWS 인스턴스에 접속할 수 있습니다.

      8) 고급세팅으로 keepalive라는 것을 설정할 수 있습니다. AWS는 사실 얼마간 입력이 없으면 자동으로 서버측에서 세션을 종료시켜버리기에 일정 주기마다 keepalive신호를 발생시켜 서버가 꺼지지 않게 하는 것인데요, 이를 위해서는 왼쪽 디렉터리에서 Connection을 클릭한 뒤 Seconds between keepalives 에 있는 값을 적당히 설정해주면 됩니다. 저는 그냥 단순하게 1분마다 keepalive신호를 발생시키도록 60을 입력해놓았습니다.

 

 

이로써 인스턴스에 접속까지는 전부 끝냈습니다.

 

이제 파일을 주고 받을 때 매번 AWS를 통하거나 CLI에서 사용하기 힘드므로 FileZila를 통하여 FTP환경을 구축하고 실제로 인스턴스 상에 파이썬을 설치하여 뭔가 서버로서의 기능을 할 수 있게 만들어 보겠습니다.(그런다고 flask처럼 본격적인 웹 서비스용 서버가 아닌 그래도 뭔가가 돌아가는 서버...)

그리고 이후에 시간이 된다면 jupyter notebook도 서버에서 돌려보도록 하겠습니다.

 

분명히 이전에 AWS 웹서버 한번 구축하면서 기록한 자료가 있을 것 같은데 없어서 다시 쓰는 포스팅입니다.

 

기본적으로 기록의 성격이 강하기 때문에 1차적으로는 글로 작성되며 나중에 차차 이미지 업로드 예정입니다.

 

직접 해보면서 업데이트 하는 내용입니다.

 

AWS 프리티어 사용에 맞추어 작성하였습니다.

AWS 프리티어는 신규가입 후 12개월간 월 750시간의 무료 이용시간을 줍니다. 하지만 한달 31일이라도 한달에 744시간 밖에 되지 않으므로 월 750시간 12개월 무료의 뜻은 1년간 무료로 AWS를 사용할 수 있다는 것입니다.

 

1. 아마존 웹 서비스 시작하기

      1) https://aws.amazon.com/ko/에 접속합니다.

      2) 우측 상단의 주황색 버튼인 '콘솔에 로그인' 버튼을 누릅니다.

      3) aws계정이 없을 시 'aws계정 새로 만들기'를 눌러 계정을 새로 만듭니다. 이 과정에서 신용카드를 등록하는 부분이 나오는데, 해외 신용카드를 등록하여야만 진행이 되니 해외 결제가 가능한 신용카드를 입력합니다. 이후 1달러가 결제 되었다가 취소되며, 신용카드가 valid한지 파악하게 됩니다. 이때 결제 후 취소시기가 영업일 2~3일 혹은 한달정도 걸리는 경우도 있다고 하나, 취소는 제대로 되기 때문에 안심하셔도 됩니다. (만에하나 결제일까지 결제가 안되고 청구되는 경우에는 직접 문의를 하셔야 합니다.)

      4) MFA 설정 : 아이디를 만들게 되면 우선적으로 하셔야 하는 일은 MFA(Multi-Factor Authentication) 설정입니다. MFA라고 해서 뭔가 어려운 것 같지만 사실상 OTP의 개념입니다. AWS의 경우 사용량 만큼 돈을 내는 시스템이기 때문에 MFA를 설정하지 않은 채 사용하다가 해킹이라도 당하게 되면, 최고사양으로 서버를 세팅해버린 다음에 몇시간 동안 코인 채굴 돌리고 사라져버리는 해커 덕분에 몇 천만원(...)이 청구될 수도 있습니다. 그렇기에 MFA는 중요한 요소입니다.

            4-0) 핸드폰 어플리케이션 중 MFA를 지원하는 어플을 깔아야 합니다. 간단히 OTP 어플을 까는 것 입니다. 아이폰/안드로이드 마켓에서 'Authenticator'를 검색하시면 구글에서 제공하는 어플이 하나 있습니다. 그것을 핸드폰에 까시면 됩니다.

            4-1) 먼저 AWS Management Console창으로 들어가게 되면(사실상 로그인 하고 바로 처음에 뜨는 페이지) 검색창이 하나 뜹니다. 여기에 'IAM'이라고 치시고 엔터를 누르면 IAM창으로 넘어갑니다. IAM은  Identity and Access Management의 약자로 그냥 '계정 보안' 페이지 정도로 생각하시면 됩니다.

            4-2) 그 창에서 바로 아래 보이는 '루트 계정에서 MFA활성화'를 누른 뒤 그 아래 있는 'MFA 관리' 버튼을 누릅니다.

            4-3) 페이지가 이동되며, '멀티팩터 인증(MFA)'을 선택하면 하단에 표가 한줄 나오는데 그 제일 오른쪽에 있는 '관리'를 누릅니다.

            4-4) 이후에는 페이지에서 요구하는대로 진행하시면 됩니다.

      5) 다시 AWS Management Console창으로 돌아와 이번에는 EC2를 검색하고 엔터를 누릅니다.

      6) 왼쪽 메뉴 중 '인스턴스'를 클릭합니다.

      7) 파란색 버튼인 '인스턴스 시작'을 누릅니다.

      8) 여기서는 우분투 프리티어를 사용할 것입니다. 단계1 페이지에서 'Ubuntu Server 18.04 LTS (HVM), SSD Volume Type'를 선택해 줍니다. 선택 방법은 제일 오른쪽의 파란색 '선택'버튼을 누르는 것입니다.

      9) '프리티어 사용가능'이라는 초록색 라벨이 붙은 t2.micro가 기본적으로 선택되어 있을 것입니다. 만약 유료로 더 좋은 성능의 웹서버를 사용하시고 싶으시면 하단의 다른 옵션들도 선택이 가능합니다.

      10) 여기서 바로 파란버튼인 우하단의 '검토 및 시작'을 누르셔도 되지만, 일단 회색의 '다음: 인스턴스 세부정보구성'으로 넘기시며 이 인스턴스가 어떤 설정을 가지고 있는지 확인해 보셔도 괜찮습니다. 특히 '4. 스토리지 추가'에서는 기본 8GiB의 저장공간을 제공하는 t2.micro이지만 무료로 30GiB까지 저장공간을 확장할 수 있다고 나와있습니다. 하지만 저는 항상 8GiB의 기본 설정만을 사용하여 보아서 30GiB는 사용해 본적이 없습니다. 혹시 사용해보시고 무료임이 확인되면 제보주시면 수정하겠습니다.

      11) 나중에 인스턴스를 만든 뒤 왼쪽 메뉴 중 '보안그룹'에서 수정할 수도 있지만 만들때 바로 보안그룹을 만들어 줄 수 있습니다. 보통 서버에서 나가는 포트인 '아웃바운드 포트'는 전부 개방시키고, 외부에서 서버로 들어오는 '인바운드 포트'를 막아 서버를 보호하곤합니다. 여기서는 인바운드 포트 중 80번 8888번 22번 20-21번의 4-5개의 포트를 개방합니다.

            80번 포트의 경우 HTTP포트로 만약 AWS서버로 홈페이지를 사용하실 경우 개방해주시면 되는 포트입니다.

            8888번 포트의 경우 jupyter notebook이 사용하는 포트입니다. 만약 원격으로 jupyter notebook을 사용하시려는 경우 80번 포트와 8888번 포트를 개방하여 주시면 됩니다.

            22번 포트의 경우 SSH포트입니다. 즉 아무나 서버에 관리자로 접속하지 못하고, 인증된 사용자만 접속할 수 있게 인증을 진행하는 포트라고 생각하시면 됩니다. 앞으로 나올 .pem 파일과 같은 인증 파일을 기반으로 접속합니다.

            20-21번 포트는 FTP포트라고 생각하시면 됩니다. 나중에 filezila등으로 웹서버에 접속하여 파일을 올리고 내릴 때 사용합니다. 사실 AWS자체에서 파일을 업로드 및 다운로드 할 수 있는 방법을 제공하고 있고, 심지어는 CLI(Command Line Interface)상에서 바로 파일을 업로드/다운로드 할 수 있지만, GUI환경에서 사용하기 번거롭고 귀찮다는 단점이 있습니다. 그러나 filezila등의 FTP프로그램을 사용시 상당히 편리하게 file들을 관리할 수 있습니다.

이 모든 포트를 적용하였을 경우 AWS상에 아래와 같은 보안그룹이 생성됩니다. 4개 포트 개방에 8줄이 생성된 이유는, 사실 AWS상에서 미확인 상의 이유로 0.0.0.0/0을 가지고 만들게 되면 ::/0라는 것도 동시에 생성되서 그렇습니다.

HTTP TCP 80 0.0.0.0/0
HTTP TCP 80 ::/0
사용자 지정 TCP 규칙 TCP 8888 0.0.0.0/0
사용자 지정 TCP 규칙 TCP 8888 ::/0
SSH TCP 22 0.0.0.0/0
SSH TCP 22 ::/0
사용자 지정 TCP 규칙 TCP 20 - 21 0.0.0.0/0
사용자 지정 TCP 규칙 TCP 20 - 21 ::/0

      12) 그렇게 '보안그룹'까지 설정을 마친 뒤 '검토'에 들어간 뒤 '시작'을 누르게되면 '키 페어 생성' 팝업이 뜰 것입니다. '새 키페어 생성'이 처음 만드셨을 경우 기본적으로 선택이 되어 있으실 텐데 '키 페어 이름'을 입력하시고 '키 페어 다운로드'를 누르시면 '지정하신 키 페어 이름.pem'파일이 자동적으로 다운로드 될 것입니다. 이 .pem파일이 나중에 AWS로그인에 필요한 파일이 되니 정확한 위치에 잘 저장하셔야 합니다. 이 .pem파일이 없을 경우 AWS에 관리자로 접속할 수 없습니다.

      13) 키 페어까지 다운로드가 완료되었다면, 새 인스턴스가 만들어집니다. 쉽게 말해 아마존 서버실에 만드신 분의 컴퓨터가 가상으로 생성된다고 생각하시면 됩니다. 이제 시작과정을 거쳐서 몇 분 뒤면 제대로된 linux 컴퓨터 한대가 작동되는 상태입니다.

      14) 인스턴스는 몇 분마다 갱신되는 퍼블릭 IP를 가지고 있습니다. 개인적으로 쫄려서 실험해보지는 않았습니다만 이 상태로 사용할 시 퍼블릭 IP사용에 대한 요금이 청구된다고 하며, 이를 방지하기 위하여 왼쪽 메뉴에서 '탄력적 IP'를 선택하여 줍니다.

      15) '새 주소 할당'을 눌러주시고 그냥 바로 '할당'을 다시 눌러주시면 탄력적 아이피가 하나 생성이 됩니다.

      16) 이후 '새 주소 할당' 옆에 있는 '작업'에서 '주소 연결'을 눌러주시고 {리소스 유형: 인스턴스, 인스턴스: 방금 만든 인스턴스(현재 하나의 인스턴스밖에 만들지 않았으므로 그냥 클릭하면 나오는 거 하나), 프라이빗 IP: 그냥 클릭시에 아래 하나 나오는 IP}를 차례로 선택해 주신 뒤에 '연결'을 눌러주시면, 제 인스턴스에 퍼블릭으로 접속할 수 있는 IP가 생성된 것입니다. 만약 이 과정을 거치지 않으시면 aws에 cli로 연결시나, ftp서버 연결 시 매번 바뀌는 public ip를 잡아서 연결해야 하지만, 이 과정 이후에는 단 하나의 ip로 제 인스턴스가 연결됩니다.

 

 

 

 

처음에 생각했던 것보다 글이 엄청 길어지네요.. CLI연결이나 그 이후 부분은 차후에 다시 포스팅 하도록 하겠습니다.

블로그 포스팅은 해야겠는데 소재는 생각은 안나는데 포스팅은 해야겠고... 를 무한반복하다가 결국에는 다시 넉두리로 돌아왔다.

 

사적인듯 공적인듯 사적인 공간에 무언가를 적어낸다는 것은 인간이라는 동물 고유의 특성이 아닌가 싶다. 공공장소에서의 낙서가 그러하고 화장실 문의 그 개인적이면서도 불특정의 다른 사람과 교류가 되는 그러한 낙서들이 그러하듯이..

 

그리고 그런 것은 사실 블로그, 트위터, 페이스북, 더 과거로 올라가면 미니홈피 등의 SNS, 소셜미디어, 에도 잘 녹아들어있는 정신이라고 생각된다.

 

각 소셜미디어의 목적이 다르기는 하지만, '나는 이렇게 잘산다' 등..., 그 기저에 깔려있는 정신, 혼, 이라는 것은 공통된 것 같다.

 

정말 백주 대낮에 이렇게 감상적이면서 의식의 흐름대로 아무말 대잔치인 글을 쓸 수 있다는 것도 새로운 발견이다.

 

오늘의 요는 '이렇게 내가 상태가 좋지 않다.'인 걸로 하는 것이 좋으려나..

제작년에 keras로 CUDA환경을 구축하려다가 정말 정보의 심각한 부족으로 실패한 적이 있었는데, 이번에는 별 문제 없이 한번에 성공하여서 그 과정을 기록하려고 합니다.


저에게도 의미있는 기록이지만, 다른 분들도 많은 도움이 되셨으면 좋겠네요.



이번에는 keras같은 상위 wrapper 없이 텐서플로 그대로 진행하였습니다.


도움을 많이 받은 문서는

https://www.tensorflow.org/install/gpu

로, 텐서플로 페이지 자체에서 제공해주고 있습니다.


아래는 제 컴이 윈도우즈인 관계로 윈도우즈를 기본으로 합니다.

만약 linux와 같은 운영체제이신 경우 위의 텐서플로 홈페이지에서 리눅스는 어떻게 설치하는지 잘 알려줍니다!


1) 본인의 GPU가 CUDA GPU 환경을 제공하는지를 확인해 봅니다.

기본적으로 CUDA가 엔비디아nVidia사에서 만든 플랫폼이므로 엔비디아의 지포스 제품이면 일단 가능성은 있지 않을까 생각해 볼 수 있을 것 같습니다.

그리고 GTX 붙으면 일단 된다고 보시면 될 것 같습니다.

요기로 가시면 CUDA가 가능한 GPU인지 확인해 보실 수 있습니다. https://developer.nvidia.com/cuda-gpus

저는 GTX 1060이라 묻지도 따지지도 않고  그냥 설치했습니다.


2) 차례대로 NVIDIA® GPU drivers, CUDA® Toolkit, CUPTI, cuDNN을 깔아줍니다.

텐서플로-gpu는 먼저 깔아도 되고 위의 4가지 프로그램을 다 깔고 깔아도 되는 것 같습니다.

CUPTI는 굳이 안깔아도 될 것 같기는 한데, 저번에 한번 CUDA하려다 안되서 작은 가슴에 그냥 깔고 진행했습니다.


2*) gpu환경을 사용하기 위해서는 tensorflow-gpu를 깔아야 합니다. 아나콘다를 사용하시면 아나콘다 프롬프트에서 conda install tensorflow-gpu를, 아니시라면 pip install tensorflow-gpu를 입력하시면 tensorflow-gpu가 깔립니다. tensorflow-gpu가 깔리면, 이전과 같이 import tensorflow하시면 됩니다.


3) 다 깐 뒤에 시스템 PATH를 설정해 주어야 합니다.

여기서는 시스템 PATH를 설정해 주는데, 깔린 위치가 정확해야 합니다.

드라이버와 툴킷을 깔면 설치파일처럼 설치가 되고, CUPTI와 cuDNN은 압축파일로 풀리게 될 것 입니다.

여기서 설치파일은 상관이 없는데, CUPTI과 cuDNN은 압축을 푼 뒤 폴더 이름을 각자 'CUPTI'와 'tools'로 바꾸어 줍니다.

그리고 CUPTI 폴더는 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras'아래에 폴더를 통채로 복사 붙여넣기 해주시고, tools 폴더는 C드라이브 아래 바로 붙여넣어 주세요.


이후 아무 명령 프롬프트나 여시고(예를 들어 실행->cmd)

SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin;%PATH%

SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\CUPTI\libx64;%PATH%

SET PATH=C:\tools\cuda\bin;%PATH%

요렇게 세 개를 써주시면 됩니다.


텐서플로에서 9.0만 지원한다고 그래서 찾다가 저는 9.1로 설치하였는데, v10도 텐서플로에서 잘 작동하는 것 같습니다. 만약에 오류가 나시면 v9.1로 시도해 보세요.


4) 제대로 깔려서 gpu에서 사용되는지 확인하기 위해서

파이썬을 켜시고(명령프롬프트에서 python 치셔도 되고, jupyter notebook에서 cell에 입력하셔도 됩니다.)

from tensorflow.python.client import device_lib 

print(device_lib.list_local_devices())

이렇게 입력해서 무언가 주르륵 나온다 하면 설치가 제대로 된 것입니다.

그리고 이후에 tensorflow 소스코드에서


device_name = "/gpu:0"

log_device_placement = True


with tf.device(device_name):

    x = tf.placeholder(tf.float32, shape=[None, 32, 32, 3])

    y = tf.placeholder(tf.float32, shape=[None, 10])

    .

    .

    .


with tf.Session(config=tf.ConfigProto(log_device_placement=log_device_placement)) as sess:

    sess.run(tf.global_variables_initializer())

    .

    .

    .


요런식으로 소스 코드를 수정해주시면 프로그램 실행 중 명령 프롬프트에서 실제로 GPU가 사용되는 현황을 볼 수 있습니다.

중요한 단어들만 추려보았습니다.


deterioration악화
ailment질병
pinning down집어내다
tapestry태피스트리
institutionalized제도화된
emancipate해방시키다
proclamation선언서
freed자유로운
scour샅샅이 뒤지다
faring성공 정도를 가늠하다
acknowledgement인정
posit상정하다
divulge누설하다
self-actualization자기실현
adversity역경
incorporate포함하다
vernacular방언
implement시행하다
notarize공증하다
hastily급하게
disparate다른
patronizing거만한
hypocrisy위선
take a stance입장을 취하다
resonate with반향을 불러일으키다
surmise추측하다
pillage약탈하다
detour우회도로
take a detour우회하다
pull over길가에 대다
meander구불구불하다
careen위태롭게 달리다
diverge갈라지다
diverge from~에서 갈라지다
hail불러세우다, 환호하며 맞이하다
bail보석을 받게 하다
trail질질 끌다, 추적하다
hail a cab택시를 불러 세우다
charter전세 내다
designate지정하다
curb(n)도로 경계석
curb(v)억제하다, resist
moor정박시키다, dock
veer방향을 바꾸다
cramped비좁은
opposite to~의 반대편에
interruptdisturb
recommend that + ?(should) R
disregard무시하다
be bound for~행이다
be bound to V반드시 ~하게 되어있다
mode of transportation교통수단
descent하강, 혈통
make a right우회전하다
abide by따르다
ascertain확인하다
bald마모된
be backed up교통이 정체되다
behind the wheel운전하여
boulevard큰길
crooked굽은
dealership판매대리점
dent움푹 들어간
double-park이중 주차하다
go downhill더 나빠지다
grab a cab택시를 잡다
guidepost이정표
hold up traffic교통을 정체시키다
hull배의 선체
speeding ticket속도 위반 딱지
tow견인하다
attrition마찰
crackdown일제단속
deflect빗나가게 하다
desist그만두다
deviate벗어나다
drive under the influence음주운전하다
elapse시간이 경과하다
enumerate열거하다
foible약점
jaywalk무단횡단하다
jolt크게 흔들리다
rear-end~에 추돌하다
stall(v)엔진이 멎다
stall(n)노점
strident귀에 거슬리는
swerve방향을 바꾸다
trudge터덜터덜 걷다
unheeded무시된
an arm and a leg비싼
get ahead성공하다
get down to~을 시작하다
if you ask meI think
time off휴가
turn down~을 거절하다
rope off~을 차단하다
pull off해내다
cater to AA의 구미를 맞추다
soggy질퍽한
let up나아지다
tie the knot결혼하다
kick in약효가 나타나다
out of the blue뜻 밖에도
capitol국회의사당
resort to AA에게 의존하다


이 단어들은 quizlet에서도 보실 수 있습니다.


https://quizlet.com/_68ehl9

요 근래에 꾸준하게 통계에서부터 머신러닝을 거쳐 딥러닝을 배우고, 딥러닝을 배우고, 딥러닝을 또 배우다보니 뭔가 정리를 하고 싶은 욕망이 꾸물꾸물 올라오네요.


사실 인터넷에 찾아보면 정말 한 포스팅 내에 삐까뻔쩍하게 사진이랑 막 수식이랑 코드랑 막막 쓰이면서 그런 포스팅들이 넘쳐날 것을 알지만..


그래도 실제로 계속해서 배우는 사람의 입장으로 뭔가 거창한 거 빼고 담담하게 중요한 부분들만 간단하게 정리한 포스팅은 없지 않을...까? 해서 적어보는 포스팅입니다.


사실 한 포스팅안에 그 많은 딥러닝에 대한 내용을 담는 것도 어렵고 해서 제가 시간이 날 때마다 차근차근 써 볼 생각입니다.


그리고 제가 아는 한도 안에서 거창하지 않게 쓸 것이라, 이 부분에서는 이 글을 읽으시며 틀을 잡으시고 관련된 부분들을 찾아보시면 더 좋을 것 같습니다.(그리고 사실 그것이 제가 이 블로그를 만든 이유이기도 하지요.. 문턱에너지를 낮춰주는 블로그...)


그럼 시작해보겠습니다.


일단 역사보다는...


자, '딥러닝'은 왜 '딥러닝'일까요?


사실 딥러닝을 알기 전에 '머신러닝'이라는 것을 먼저 알아야 합니다.


딥러닝은 '기계가 스스로 학습한다'는 기계 학습 혹은 머신 러닝의 한 부분이기 때문이지요.


그리고 머신러닝에서는 입력과 출력 사이의, 사람으로 치자면 '추론의 단계'를 스스로 공부하는 것이죠.


이 추론의 단계를 '블랙 박스'라고 그냥 생각해 보자면


머신러닝은


'입력 -> 블랙 박스 > 출력'


이렇게 됩니다.


그리고 이 '블랙 박스'를 사람이 어느정도 수학적 알고리즘으로 만들어 주게 되면, 시행과 오차를 반복하며 스스로의 로직을 찾아갑니다.


그런데 딥러닝은 요 '블랙 박스' 부분이, "진짜로" 블랙 박스입니다.


머신 러닝은 사람이 어느정도의 수학적 알고리즘을 부여해 주고 그에 따른 답을 찾는 것이었다면(즉, 대략 찾아가는 방식을 아는 것이라면), 딥러닝에서는 아예 사람이 요 부분에 손을 대지 않습니다.


그래서 결국에 답이 나와도 '어째서 이 답이 이렇게 나오지?'하는 부분을 모르는 것입니다.


그리고 요 블랙 박스 부분이 머신 러닝과 다르게 긴 여러개의 과정을 가지기 때문에 '딥' 러닝이라고 부르는 것입니다. (긴것을 깊다고 볼수도 있지요)


반대로 머신러닝을 'Shallow learning'이라고 부르는 경우도 있습니다.


그리고 이 블랙박스 부분은 로젠 블라트라는 사람이 고안한 퍼셉트론에서 출발한 '인공 신경망'이 기본인데, 이 부분은 제가 이후에 다룰 수도 있고, 이 부분 부터는 인터넷에 정말 많은 정보들이 있으니 직접 찾아보셔도 좋을 것 같습니다.



사실 딥 러닝이라는 어려운 분야를 정말 짧고 단숨에 읽히는 포스팅으로 쓰기 위해 여러 지식을 한번에 묶어서 쓰려니 힘드네요...


그래도 이 글을 읽고 '와! 딥러닝! 아시는구나!' 하셨으면 좋겠습니다.


그럼 다음에 뵈어요~

인터넷에서 여성 호신용품(키링형 알람벨)을 샀는데, 배송이 늦어 그 중간 기간에 어떻게 할까 싶어 인터넷을 뒤져 보았습니다.


네X버에 검색한 결과, 블로그 포스팅 중 단 하나에서 다이소에서 알람벨 키링을 판다는 정보가 있어 다이소에 사러갔었는데, 현재는 팔지 않는 것 같습니다.



호신벨 키링에 대한 이미지 검색결과

요렇게 생긴 것입니다. 저 몸체를 키링에서 뽑아버리면 정말 어마어마한 소리가 뿜뿜.

<이미지 : 구글 검색>



동네에 있는 다이소 3곳, 지하철 몇 정거장 건너 있는 다이소 1곳 을 전부 확인한 결과 없었고, 가장 크다는 명동 다이소에 가서도 없었네요.


파는 것은 키링형 호루라기 2종류 뿐입니다.


혹시 저처럼 잘못된 정보에 낚여 여러 다이소를 전전하는 수고를 하지 마시기 바랍니다.



명동 다이소에 대한 이미지 검색결과

명동에 있는 8층 짜리 다이소... 여기에도 없었습니다.

<출처 : 구글 이미지 검색>



혹시나 파는 다이소가 있는 경우 댓글로 제보해 주시면 본문에 반영하겠습니다.


그 미세먼지 뿜뿜하던 주말간에 빨빨거리고 돌아다녔던 걸 생각하면 두가 아파오면서도 다른 분들은 잘못된 정보에 낚이시지 않으셨으면 좋겠어서 이렇게 포스팅 합니다.


(그러나 과연 네X버 검색에 최소한 그 글이랑 같이 올라갈 수나 있을까...)

오늘의 포스팅은 암호로 보호된 (복사 금지 된) pdf 해결 방법이다.


TIPS에 적는 것이니 만큼, 블로그 노출도는 낮겠지만, 가장 간단한 플레인 텍스트로 작성하겠다.


1) smallpdf.com

pdf 암호 해제 사이트

인터넷에서 찾아보면 가장 사람들이 많이 찾는 사이트이다.

장점 : 인터넷 상에서 사용 가능

단점 : 한시간에 2개 밖에 작업 불가, 암호 해제 속도 느림


2) allinpdf.com

pdf 암호 해제 사이트

인터넷에서 두번째로 많이 나와 있는 사이트.

장점 : 인터넷 상에서 사용 가능

단점 : 암호 해제 속도 느림


3) 짜투리 패스워드 리커버리

파일에 걸린 암호 해제 프로그램

암호라는 것이 사용하는 키의 종류가 증가하면 할수록 기하급수적으로 가짓수가 늘어나니 어느정도 암호 추측이 가능한 경우에 사용

사용 방법은 암호 생성에 사용한 종류(숫자, 특수문자, 문자 등)와 암호 길이를 입력해주면 순식간에 찾아준다.

본인이 암호 입력하고 까먹었을 때 어느정도 경우의 수를 줄여서 찾아주는 것이 기본 모토이다.


4) 알pdf

이번에는 pdf 자체의 암호를 없애는 것이 아닌 pdf에서 복사 금지된(암호 걸리면 복사도 못하게 된다) 내용만 빼보는 방법이다.

특히 어차피 pdf 자체의 암호를 풀어도 그 내용을 가지고 다시 엑셀이나 문서로 만들어야 하는 경우에는 이것이 더 빠르다.

방법은 알pdf 다운 및 설치 -> 알pdf에서 pdf파일 열기 -> 상단 리본메뉴에서 '~로'라고 써있는 부분을 클릭하여 내보내기


5) Advanced pdf password recovery

패스워드 리커버리 프로그램의 일환

30일짜리 쉐어웨어 프로그램이고 정식으로는 돈 주고 써야하는 러시아 프로그램

인터넷에 잘 찾아보면 프리 프로그램이 있다.



일단 블로그가 검색이 되게 하려면 각종 웹사이트의 웹마스터도구에 블로그를 연동시켜야 합니다.


보통 네이버, 다음, 구글 정도면 어느정도 커버가 되는데, 더 하고 싶은 분들은 , 빙, 네이트 정도를 추가적으로 하시는데 빙은 티스토리 블로그는 연동이 안되는 것 같고, 줌이 은근히 많이 들어와서 줌을 추가적으로 등록하시면 될 것 같습니다.


여기서 티스토리 블로그는 다음과 네이트에 자동으로 연동되어 있으니, 네이버와 구글(혹은 더 추가적으로 줌) 웹마스터도구에 등록하여주면 되고, 네이버 블로그는 다음에만 연동시키면 네이트까지 자동으로 연동됩니다.


줌의 경우 그냥 들어가기만 해도 가입 없이 바로 신청이 가능하며(http://help.zum.com/submit/register), 구글의 경우도 그냥 신청하면 어느정도 문제없이 잘 작동됩니다.


문제는 네이버인데, 네이버 웹 마스터 도구가 참 까다롭습니다.


네이버 웹 마스터 도구에 사이트를 등록하고 인증을 받아도, 사실 네이버에 잘 뜨지 않는데, 그 이유는 '수집'이 문제인 것 같습니다.


네이버 웹마스터도구에서는 웹페이지 수집 요청을 할 수 있습니다.(https://webmastertool.naver.com/site/request/crawl.naver?site=https%3A%2F%2Fomnil.tistory.com)

아마 로봇이 자동으로 수집하지 못하는 것을 사용자가 직접 수집 요청을 해주는 것 같은데, 저의 경우 네이버 웹마스터도구에 등록해놓아도 제 블로그가 수집이 되지 않아 한번 일괄적으로 요청을 하였습니다.


그 이후 'RSS제출'에서 RSS주소를 제출해주는데, RSS주소는 티스토리 기준 '본인의 티스토리 주소/rss'입니다. (https://omnil.tistory.com/rss)

여기서 티스토리 블로그 관리에서 '관리' -> '블로그' -> 하단의 '기타설정' 에서 RSS를 '50개'로 갱신이라고 바꾸어줍니다.


그리고 사이트맵도 만들어서 네이버와 구글에 각 업로트 해주시면 됩니다.


사이트맵 만드는 방법의 경우 인터넷에서 검색시 잘 나오니 추가적으로 참고하시면 됩니다.


자세한 설정 주소는 http://www.web-site-map.com/입니다.

자세한 설명은 https://www.sitemaps.org/ko/protocol.html#escaping입니다.



약 사이트맵은 한달 주기로 수집 요청은 매일 하는 것이 좋아 보입니다.


또한 백링크를 많이 받으면 사이트 지수가 올라가는데, 백링크란 다른 사이트에서 내 사이트를 언급하는 것을 말합니다. 평판이 높은 사이트에서 한번 링크하는 것이, 낮은 사이트에서 여러번 링크하는 것보다 더 지수가 높다고 합니다.

이제부터는 운동기록 8일차부터 계속해서 반복한다.


시험 때문에 거의 며칠을 쉬었지만, 그래도 꾸준히 하는 것에 보람이 있었다.


매 회 30초도 쉬지 않고 꾸준히 하여 약 25분이 걸렸다.

+ Recent posts