라즈베리파이는 작은 컴퓨터입니다.

그리고 성능은 그 크기에 걸맞게 그리 좋지 못하지요.

 

하지만 그럭저럭 좋은 성능에 굉장히 저렴한 가격으로 쓸만한곳이 상당히 많습니다.

 

이전에 저는 Tacotron으로 무언가를 하나 만들었습니다. 어찌되었건 이를 다시 서빙해야 했는데 코드는 python의 기본 적인 웹서버로 웹페이지에서 받아볼 수 있게 어찌저찌 만들었습니다.

 

tacotron의 오픈소스를 만든 keithito의 demo_server 소스를 이용해서 hccho2의 한국어 tacotron을 데모를 쓸 수 있게 어찌저찌 잘 수정했습니다.

https://github.com/MoorDev/Tacotron2-Wavenet-Korean-TTS/blob/master/run.py

 

그런데 이걸 서비스할 방법이 마땅치 않습니다. 무료로 유명한 구글의 컴퓨트 엔진을 쓰려고 했는데 RAM이 모자란 탓인지 자꾸 멈춥니다. 심지어 pip도 제대로 안 되더군요.

 

서버를 구축하려면 pip freeze 된 것을 다시 설치해야 하는데 이거 자체가 안 되니 환장할 노릇입니다.

 

그래서 제 옆에 있던 라즈베리파이에 한번 넣어보기로 했습니다. 그래도 ARM칩셋이지만 램도 어느정도 충분하고 학습이 아닌 결과물만 뽑으면 되는 것이니까요.

 

 

우선 제가 개발한 파이썬 환경을 Freeze 합니다.

 

개발및 학습 PC에서

pip freeze > requirements.txt

 

그리고 만들어진 requirements.txt는 다른 곳에서 쓸 때도 그대로 환경을 구축하는데 쓰이게 됩니다. 

 

그 다음 라즈베리파이에 OS를 설치합니다.

이건 제가 따로 말 안 해도 방법이 워낙 많으니까 넘어갑니다. 대신 ssh를 활성화 해야 하는건 잊으면 안 됩니다.

ssh 활성화는 구운 SDCARD에 boot파티션에 ssh란 파일이름으로 아무 파일이나 하나 만들어주면 됩니다.

무선인터넷을 바로 잡는 법은 역시 boot파티션에 wpa_supplicant.conf 라는 이름으로 

내용을 다음과 같이 적으시면 됩니다.

country=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="공유기이름"
    psk="공유기비밀번호"
}

왜 국가가 US로 되어 있냐면 KR로 하니 라즈베리파이가 못 잡습니다. 그래서 그냥 호환되는 US로 했습니다. 일단 잡히면 되는거지요.

 

그 다음 개발환경이자 Python 폴더 자체를 통째로 넣어줍니다. 보통 Tensorflow 개발 PC는 리눅스고 라즈베리파이OS도 리눅스이니 충분히 복사가 가능할 것입니다.

 

이걸 통째로 SDCARD에 넣어줘야 합니다. 만약 필요하면 경로도 최대한 같게 해주는 것이 중요하지요.

 

그리고 라즈베리파이를 부팅하면... SSH로 접속할 수 있게 됩니다. IP주소를 모르겠다면 공유기설정에서 찾던가 아니면 다른 방법을 찾아야 합니다.

ssh pi@라즈베리파이주소

기본 비밀번호는 raspberry 인데 해킹 방지를 위해 꼭 sudo raspi-config에서 비밀번호를 바꾸는 작업을 해 줍시다.

 

이제 파이썬 버전을 맞추는 작업이 필요한데 제가 사용한 라즈베리파이OS는 데비안 10(Buster)기반입니다. 기본으로 Python 3.7을 사용합니다.

그에비해 저는 Python3.6을 기본으로 사용했습니다. 그래서 얼마나 다른가 봤는데... 예약어 차이정도라 크게 문제는 없을 정도네요. 그래서 그냥 쓰기로 했습니다. 만약 3.8이었다면 많이 차이나기 때문에 Python을 수동으로 설치하는 수고가 필요했을 겁니다.

 

그리고 requirements.txt를 사용해서 필요한 패키지를 설치합니다.

sudo pip3 install -r requirements.txt

 

이제 어마어마한 다운로드를 보일텐데 ARM칩과의 차이로 인해 일부 문제가 있었습니다.

 

저는 우선 LLVM문제가 일어났습니다. 데비안 Buster는 LLVM-7을 사용하는 반면 저는 LLVM-10을 사용했습니다.

그래서 LLVM-10을 설치했습니다.

 

그런데 수동으로 해야합니다.

https://releases.llvm.org/download.html

 

LLVM Download Page

If you'd like access to the "latest and greatest" in LLVM development, please see the instructions for accessing the LLVM Git Repository. The major changes and improvements that the development version contains relative to the previous release are listed i

releases.llvm.org

여기서 제 라즈베리파이는 ARM-32비트이므로 ARMv7을 선택합니다. 64비트 버전도 나오고 있으니 이를 확인해야합니다. 64비트라면 AArch64를 다운로드 받으세요.

라즈베리파이에서

wget github.com/llvm/llvm-project/releases/download/llvmorg-10.0.1/clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz

tar -xvf clang*.xz

cd clang+llvm (탭)

sudo cp -R * /usr/local

 

이걸로 llvm-10의 설치를 끝냈습니다. 그러고나니 제일 중요한 Tensorflow가 문제가 생기더군요.

일단... 안 깔립니다. 원래 설치가 되어야 정상인데 간혹 거부가 일어나나 봅니다.

sudo pip3 install tensorflow==(원하는버전)

이걸로 설치가 되어야 정상이지만 설치가 제대로 안된다면

https://qengineering.eu/install-tensorflow-1.15.2-on-raspberry-pi-4.html

 

Install TensorFlow 1.15.2 on Raspberry Pi 4 - Q-engineering

A thorough guide on how to install TensorFlow 1.15.2 on your Raspberry Pi 4. Build from source code with Bazel for Python 3 and C++ API.

qengineering.eu

여기를 참고합니다.

 

sudo apt-get install libatlas-base-dev libatlas3-base

sudo apt-get install libhdf5-dev libc-ares-dev libeigen3-dev

sudo pip3 install h5py==2.10.0

wget github.com/Qengineering/Tensorflow-Raspberry-Pi/raw/master/tensorflow-1.15.2-cp37-cp37m-linux_armv7l.whl

 

sudo -H pip3 tensorflow-1.15.2-cp37-cp37m-linux_armv7l.whl

 

이걸로 Tensorflow 1.15.2를 구동할 수 있게 되었습니다.

 

그래서 결과는..?

 

잘 됩니다!!!

,