2020年7月26日日曜日

Mac OS Catalinaに LightGBMをインストールしてpythonで使う

目的

Pythonで機械学習するにあたってLightGBMを使いたかったが、少し詰まったのでメモ

インストール方法

pipでいれる

pip3 install lightgbm

これだけだと、pythonの対話モードを立ち上げると下記のエラーが出る

>>> import lightgbm
Traceback (most recent call last):
  File "", line 1, in 
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/lightgbm/__init__.py", line 8, in 
    from .basic import Booster, Dataset
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/lightgbm/basic.py", line 33, in 
    _LIB = _load_lib()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/lightgbm/basic.py", line 28, in _load_lib
    lib = ctypes.cdll.LoadLibrary(lib_path[0])
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ctypes/__init__.py", line 451, in LoadLibrary
    return self._dlltype(name)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ctypes/__init__.py", line 373, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: dlopen(/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/lightgbm/lib_lightgbm.so, 6): Library not loaded: /usr/local/opt/libomp/lib/libomp.dylib
  Referenced from: /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/lightgbm/lib_lightgbm.so
  Reason: image not found

回避するには?

brew install lightgbm

これを実行することで、pythonでimport lightgbmしても問題が無くなる

2020年7月4日土曜日

Jupiter NotebookをRaspberry piで実行

インストール方法

公式ページにある通り

pip3 install jupyterlab

設定変更

  • config生成
  • jupyter notebook --generate-config
    

  • 書き換え場所

  • 下記でコメントインした上で鍵の場所を書くとSSL接続ができるようになる

    c.NotebookApp.keyfile '/etc/letsencrypt/live/your domain/privkey.pem'
    c.NotebookApp.certfile = '/etc/letsencrypt/live/your domain/fullchain.pem'
    
  • 追加設定
  • Raspberry Piにはモニターを付けないで使っている為、
    下記で起動時にブラウザを立ち上げないようにする
    また、ターミナルに関してもdisableとしている
    Port番号も書き換えている

    c.NotebookApp.open_browser = False
    c.NotebookApp.terminals_enabled = False
    c.NotebookApp.port = 9999
    

  • パスワード設定
  • 下記でプロンプトに打ち込む

    jupyter notebook password
    

  • デフォルトのフォルダを変える
  • c.NotebookApp.notebook_dir = '/home/pi/work'
    

Jupyter Notebookを起動

下記コマンドで実行してエラーが出ない場合はブラウザを開いてアクセスをする

jupyter lab --ip=0.0.0.0

パスワードを入力すると、noteが開く


起きたエラー

  1. 鍵がないと言われる
  2. - エラーメッセージ

    ValueError: certfile "/etc/letsencrypt/live/your domain/fullchain.pem" does not exist
    

    - 解決方法 フォルダの権限を変える

    sudo chmod 755 /etc/letsencrypt/archive/
    
  3. アクセス権がないと言われる
  4. - エラーメッセージ

    PermissionError: [Errno 13] Permission denied
    

    - 解決方法 オーナーを追加する

    sudo chown pi privkey.pem
    sudo chown pi fullchain.pem
    

起動時に実行する

細かいことを考えずにsystemdに登録する

$cat /etc/systemd/system/jupyter.service

[Unit]
Description=Jupyter Notebook

[Service]
Type=oneshot
WorkingDirectory=/home/pi/jupyter
ExecStart=/home/pi/.local/bin/jupyter lab --ip=0.0.0.0
User=pi
Group=pi

[Install]
WantedBy=multi-user.target

$sudo systemctl enable jupyter
$sudo systemctl status jupyter