CUDA, cuDNN 설치할 때 팁 - dmesg

2018. 3. 21. 11:14 from Dev/Deep learning

GPU 이용은 클라우드로만 하다가, GPU를 득템하게 되어 리눅스 머신에 세팅.

Machine Learning으로 가는 가장 큰 난관은 GPU 잡아주고 드라이버, CUDA 설치하는 거라고 누가 그랬던가..

결국 열 번 정도 OS부터 잘근잘근 다시 깔며 고생. 인터넷에 여기저기 떠도는 팁들은 다 제각각이라 도움이 안되고, NVIDIA에서 제공하는 가이드를 정독하는게 정답입니다.

제가 남겨놓고 싶은 팁 하나. kernel driver와 CUDA driver 사이에 버전 차이 등 kernel 레벨에서 발생하는 문제는 아래 커맨드로 확인하면 도움이 됩니다. 저도 버전 문제로 엄청 헤매다가 어느 고수가 설명도 없이 "이거 한번 해봐"하는 걸 보고 해결했습니다.

sudo dmesg | grep NVRM


dmesg는 kernel ring buffer를 확인해주는 커맨드라고 합니다. 저는 이렇게 하니 client module이랑 kernel module이 안맞다는 사실을 알고 버전만 맞춰주니 바로 해결이 되더군요. ^^

'Dev > Deep learning' 카테고리의 다른 글

ndarray simple shuffle  (0) 2018.01.09
Posted by banasun :

virtualenv 설치시 오류(locale)

2018. 2. 5. 17:24 from Dev/python

virtualenv 등 이것저것 설치시 locale 오류나는 경우에는 표준으로 세팅을 해주어야 합니다. 

이 경우 locale 커맨드로 확인해보시면 locale 세팅이 안되어 있거나 한데, 보통 en-US로 바꿔주시면 대부분의 문제는 해결이 됩니다: 

export LC_ALL="en_US.UTF-8"



Posted by banasun :

ndarray simple shuffle

2018. 1. 9. 11:22 from Dev/Deep learning

ndarray를 간단하게 shuffle할 때 씁니다:


np.random.seed(seed)
indices = np.arange(len(x_train))
np.random.shuffle(indices)
x_train = x_train[indices]


'Dev > Deep learning' 카테고리의 다른 글

CUDA, cuDNN 설치할 때 팁 - dmesg  (0) 2018.03.21
Posted by banasun :

anaconda3에서 jupyter notebook - 다른 환경 설정하기

2017. 10. 30. 16:17 from Dev/Linux

anaconda를 이용할 때, root 외에 다른 환경(environment)을 만들어서 실험을 하게 되지요.

console에서는 activate 해주면 되는데, jupyter notebook을 이용할 때는 이것만으로는 부족합니다.

이럴 땐 이렇게 해주면 됩니다. 저는 tensorflow를 설치한 환경을 설정하였습니다.

source activate tensorflow
pip install ipykernel
python -m ipykernel install --user --name tensorflow --display-name "Python (tensorflow)"


이제 jupyter notebook 실행한 후 노트북을 생성할 때 아래 그림처럼 나옵니다:

이제 해당 환경으로 실행하시면 됩니다.

Posted by banasun :

Ubuntu에서 Anaconda 설치하기

2017. 10. 24. 10:37 from Dev/Linux

sudo 권한이 있는 것을 전제로 작성합니다:

 

Anaconda downloads page에서 설치하고자 하는 버전의 다운로드 링크를 가져옵니다. 저는 python 3.6 용이고, version 5.0.0.1입니다.

curl -O https://repo.continuum.io/archive/Anaconda3-5.0.0.1-Linux-x86_64.sh


서버로 운영하고 있다면SHA256으로 검사를 한번 해주는 게 좋겠지요. key 값은 여기에서 확인하시면 됩니다.

sha256sum Anaconda3-5.0.0.1-Linux-x86_64.sh


이제 다운받은 스크립트를 실행해주면 됩니다:

bash Anaconda3-5.0.0.1-Linux-x86_64.sh


그러면 라이센스 텀에 동의하는지, 설치 위치를 물어보고 설치가 진행됩니다. 마지막에 PATH 추가 여부까지 확인하는데, yes 해주면 됩니다. 설치 후에 한번 .bashrc를 실행해주면 바로 이용 가능한 상태가 됩니다.

source ~/.bashrc


Posted by banasun :

[python/django] Form class 이용시 html 소스 추가

2017. 2. 22. 16:50 from Dev/python

Django의 ModelForm을 이용하다 보면 기본 양식으로는 사용하기 편하고 좋은데, 세세하게 주위 디자인과 맞춰주려면 어떡해야 할지 여기저기 찾아봐도 잘 나오지 않습니다.


저는 bootstrap에서 form을 이용해야 해서, form field에 class = "form-control"을 각 위젯마다 추가해주어야 하는데, 아래와 같은 방식으로 처리하였습니다:


class SupplierForm(ModelForm):
    class Meta:
        model = Supplier
        fields = ['name', 'memo', 'status', ]

    def __init__(self, *args, **kwargs):
        super(ModelForm, self).__init__(*args, **kwargs)
        self.fields['name'].widget.attrs.update({
            'class': 'form-control'
        })


ModelForm을 상속하였기 때문에, __init__에서 super의 __init__를 call 해주고, 각 필드의 속성을 update 해주는 방식으로 하니 되는군요. 좀더 복잡하게 추가하는 것도 가능합니다.

Posted by banasun :

[Ubuntu/Apache] www 도메인으로 리다이렉트 간단 설정

2015. 9. 7. 17:39 from Dev/Linux

www가 붙지 않은 도메인 네임(foo.com)으로 들어온 트래픽을 www가 붙은 도메인 네임(www.foo.com)으로 redirect 시켜줄 필요가 가끔 생깁니다.

보통 apache 설정 파일에서 Rewrite 룰을 이용해서 하는데.. Virtual Host 설정으로 간단하게 하는 방법이 있어서 알려드립니다.

www.foo.com을 받아주는 Virtual Host설정을 한 후, 아래와 같이 foo.com 으로 들어온 트래픽을 redirect 시켜주면 됩니다.

 

<VirtualHost *:80>
    ServerName foo.com
    Redirect permanent / http://www.foo.com/
</VirtualHost>

 

설정을 본격적으로 바꾸는게 부담되시는 분들은 가볍게 이렇게 해주시면 됩니다.

Posted by banasun :

Ubuntu - swap 설정하기

2015. 4. 7. 01:59 from Dev/Linux

composer를 update 중에 composer가 뻗어버리는 일이 발생하였습니다. 개발용으로 Virtual server를 이용하고 있는데, 아무래도 메모리가 적어서 그런 것 같습니다.

구글링을 해보니, swap 설정을 해주어야 한다고 하니 오늘은 이 척박한(!) 서버에 스왑으로 일단 돌아가게는 해놔야 하겠습니다.


1. 일단 free 명령으로 swap 파일이 있는지 확인부터 해줍니다. :

sudo free -m



위와 같이 swap이 0 0 이 나옵니다.


2. 그러면 일단, 스왑 파일을 생성하겠습니다. 아래와 같이 해주면 4기가 크기의 파일이 생성됩니다:

sudo fallocate -l 4G /swapfile

이렇게 해주면 /swapfile 이라는 4G짜리 파일이 만들어지겠지요.


3. 이제 이 파일을 swap으로 이용하도록 설정하겠습니다. 그 전에 안전을 위해서 생성한 파일의 permission을 root만 읽고 쓸 수 있게 변경하겠습니다:

sudo chmod 600 /swapfile


4. 이제 이 파일을 swap 파일로 인식하게 해주면 되겠습니다.

sudo mkswap /swapfile

이러면 아래와 같이 반응이 옵니다.




5. 이제 swapon으로 스왑 파일을 활성화시키면 됩니다.

sudo swapon /swapfile

-s 옵션을 주면 이제 스왑이 실행되고 있는지 확인 가능합니다.

sudo swapon -s


Posted by banasun :

laravel form 이용시 arguments

2015. 4. 1. 16:53 from Dev/laravel

Laravel에서 form을 이용할 때에는 다음과 같이 array에 주절주절 다 담아서 이용을 합니다:

{{ Form::open(array(
            'method' => 'post',
            'url' => action('PostingsController@store'),
            'class' => 'form',
            'role' => 'form')
            ) }}

method는 당연히 post냐, put이냐를 지정해주면 됩니다.

url은 helper 명령어인 action()이나 route(), URL::to 등을 이용해서 submit 받을 스크립트를 지정해줍니다. submit 도 같은 스크립트가 받을 거면 생략하셔도 됩니다.

class, role 등 추가적인 내용이 있으면 넣어주면 됩니다. 위는 bootstrap3에서 form에 class, role을 'form'으로 지정해야 해서 위와 같이 썼습니다.

Posted by banasun :

[SEO] 의미 구조를 정확히 하자

2015. 3. 27. 10:57 from Dev/SEO
The fundamental failure of most graphic, product, architectural, and even urban design is its insistence on serving the God of Looking-Good rather than the God of Being-Good. – Richard Saul Wurman

여러 명의 웹디자이너, 퍼블리셔 분들과 작업해보면서 느낀 점은, tool에 너무 의존하다 보면 웹페이지의 의미구조에 대해 고민하는 분이 적을 수밖에 없겠구나 하는 것입니다. WYSIWYG로 보이는 대로만 작업하다 보면 그렇게 되는 거지요.

그 다음부터는 작업하면서 꼭 문서구조가 어떻게 되는지 중간중간 확인을 해봅니다. 간단하게는 html5.org에서 운영하는 아래 사이트에서 url만 입력해 보아도 알 수 있지요.

https://gsnedders.html5.org/outliner/

심심하면 평소에 잘 설계되었다고 생각하던 사이트들을 넣어보시면서 결과를 비교해보는 것만으로도 많은 걸 느낄 수 있을 것입니다. 브라우저로 보는 게 아니라 검색엔진들이 페이지를 어떻게 보는지 감이 오니까요. 저는 웹툰 보러 들어가던 사이트를 한번 찾아보았다가 예상외로(!) 의미 구조가 FM대로 정확하게 나와있는 걸 보고 깜놀한 기억이 남네요 ㅋㅋ. 내가 이것보다 못하다니 OTL

HTML5에 도입된 semantic structure와 관련된 요소들로는 section, article, aside 같은 것들이 있습니다. 이 요소들로 문서를 구조화 시키거나, div를 이용한 블록들에 h1, h2, h3 만 잘 붙여줘도 결과가 확실히 달라지는 걸 보실 수 있을 겁니다.

SEO는 단지 meta tag 잘 만들고 title 붙이는 수준이 아니라, 기본적인 구조 설계부터 진행이 되어야 하는 것이구나.. 하는 생각을 설계부터 구현까지 계속 지니고 있어야 하는 것 같습니다. 물론 저도 일정에 쫓기고 클라이언트한테 치이다 보면 신경을 못쓰는 때가 많습니다만;;

Posted by banasun :