Memo

メモ > サーバ > サービス: AWS > 機械学習用の環境構築について調査

■機械学習用の環境構築について調査
■調査した環境 Amazon Linux 2 で調査 Python2.7 と Python3.7 がデフォルトでインストールされていた 今回はこの Python3.7 を使うものとする
$ python --version Python 2.7.18 $ pip --version -bash: pip: command not found $ python3 --version Python 3.7.10 $ pip3 --version pip 20.2.2 from /usr/lib/python3.7/site-packages/pip (python 3.7)
■MeCab yumでインストールできないので、ソースコードを取得してインストールする Amazon Linux 2 で MeCab + NEologd - Qiita https://qiita.com/hoto17296/items/7add794de677112566bc ※この手順だと、NEologdは t2.medium でなければインストールできなかった(small でも駄目だった) ※最後に掲載されているプログラム、「import mecab」は恐らく「import MeCab」 の間違い そのままだと「No module named 'mecab'」のエラーになる ※とは言え、全体的に参考になった
$ sudo yum update -y $ sudo yum groupinstall -y "Development Tools"
MeCab: Yet Another Part-of-Speech and Morphological Analyzer https://taku910.github.io/mecab/ 「ダウンロード → MeCab 本体 → Source」の「mecab-0.996.tar.gz:ダウンロード」からダウンロードURLを確認できる
$ wget 'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE' -O mecab-0.996.tar.gz $ tar xzf mecab-0.996.tar.gz $ cd mecab-0.996 $ ./configure $ make $ make check $ sudo make install $ cd .. $ rm -rf mecab-0.996*
さらに以下で辞書を導入
$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git $ cd mecab-ipadic-neologd $ ./bin/install-mecab-ipadic-neologd -n -p /var/lib/mecab/dic/mecab-ipadic-neologd $ cd ..
t2.small 環境でインストールできた (t2.micro 環境では以下のエラーになった。メモリ不足で処理が中断されている)
terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc /home/ec2-user/mecab-ipadic-neologd/bin/../libexec/make-mecab-ipadic-neologd.sh: line 525: 27555 Aborted ${MECAB_LIBEXEC_DIR}/mecab-dict-index -f UTF8 -t UTF8
以下で動作確認できる
$ echo メイが恋ダンスを踊っている。 | mecab -d /var/lib/mecab/dic/mecab-ipadic-neologd メイ 名詞,固有名詞,人名,一般,*,*,M.A.Y,メイ,メイ が 助詞,格助詞,一般,*,*,*,が,ガ,ガ 恋ダンス 名詞,固有名詞,一般,*,*,*,恋ダンス,コイダンス,コイダンス を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 踊っ 動詞,自立,*,*,五段・ラ行,連用タ接続,踊る,オドッ,オドッ て 助詞,接続助詞,*,*,*,*,て,テ,テ いる 動詞,非自立,*,*,一段,基本形,いる,イル,イル 。 記号,句点,*,*,*,*,。,。,。 EOS
以下でPythonから使用できる
$ pip3 install mecab-python3 $ python3 Python 3.7.10 (default, Jun 3 2021, 00:02:01) [GCC 7.3.1 20180712 (Red Hat 7.3.1-13)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import MeCab >>> mecab = MeCab.Tagger("-d /var/lib/mecab/dic/mecab-ipadic-neologd") >>> print(mecab.parse("メイが恋ダンスを踊っている。")) メイ 名詞,固有名詞,人名,一般,*,*,M.A.Y,メイ,メイ が 助詞,格助詞,一般,*,*,*,が,ガ,ガ 恋ダンス 名詞,固有名詞,一般,*,*,*,恋ダンス,コイダンス,コイダンス を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 踊っ 動詞,自立,*,*,五段・ラ行,連用タ接続,踊る,オドッ,オドッ て 助詞,接続助詞,*,*,*,*,て,テ,テ いる 動詞,非自立,*,*,一段,基本形,いる,イル,イル 。 記号,句点,*,*,*,*,。,。,。 EOS >>> exit()
実行できた インストール後、上記プログラムは t2.micro でも実行できた 以降、特に断りが無ければ t2.micro で実行している ■sklearn 問題なくインストールできた
$ sudo pip3 install sklearn $ python3 Python 3.7.10 (default, Jun 3 2021, 00:02:01) [GCC 7.3.1 20180712 (Red Hat 7.3.1-13)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from sklearn.svm import LinearSVC >>> from sklearn.metrics import accuracy_score >>> exit()
■scikit-learnでスパムメールを判定 Python.txt の「scikit-learn(機械学習)でスパムメールを判定」をもとに作業した 以下、部分的な作業メモ test_spamcheck.py と makedb_spamcheck.py で以下を調整した (今回の環境に合わせて、辞書ファイルの場所を指定した)
#tagger = MeCab.Tagger() tagger = MeCab.Tagger("-d /var/lib/mecab/dic/mecab-ipadic-neologd")
以下のように実行できた
$ python3 makedb_spamcheck.py 単語頻出データベース作成完了 $ python3 train_spamcheck.py 0.9777777777777777 1.0 0.9777777777777777 1.0 0.9777777777777777 〜略〜 1.0 1.0 1.0 ---- 平均= 0.9919999999999994 $ python3 test_spamcheck.py テキスト1 結果= OK テキスト2 結果= SPAM
最初「テキスト1」「テキスト2」ともスパム判定されたが、 「テキスト1」を以下の文章にするとスパム判定されなかった
お世話になっています。山田太郎です。 昨日はありがとうございました。
また、実際の仕事メールと実際のスパムメールを張り付けてテストして、それぞれ正しく判定してくれた ■TensorFlow 以下などを試したがインストールできず
# pip3 install tensorflow
実行すると「MemoryError」と表示された 試した環境は t2.micro なので、単純にスペック不足だと思われる t2.small で試してみる
Successfully installed absl-py-0.13.0 astunparse-1.6.3 cached-property-1.5.2 cachetools-4.2.2 certifi-2021.5.30 charset-normalizer-2.0.3 flatbuffers-1.12 gast-0.4.0 google-auth-1.33.1 google-auth-oauthlib-0.4.4 google-pasta-0.2.0 grpcio-1.34.1 h5py-3.1.0 idna-3.2 importlib-metadata-4.6.1 keras-nightly-2.5.0.dev2021032900 keras-preprocessing-1.1.2 markdown-3.3.4 numpy-1.19.5 oauthlib-3.1.1 opt-einsum-3.3.0 protobuf-3.17.3 pyasn1-0.4.8 pyasn1-modules-0.2.8 requests-2.26.0 requests-oauthlib-1.3.0 rsa-4.7.2 six-1.15.0 tensorboard-2.5.0 tensorboard-data-server-0.6.1 tensorboard-plugin-wit-1.8.0 tensorflow-2.5.0 tensorflow-estimator-2.5.0 termcolor-1.1.0 typing-extensions-3.7.4.3 urllib3-1.26.6 werkzeug-2.0.1 wheel-0.36.2 wrapt-1.12.1 zipp-3.5.0
と表示されてインストールできた
$ python3 Python 3.7.3 (default, Apr 3 2019, 05:39:12) [GCC 8.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf 2021-07-21 20:13:01.552836: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory 2021-07-21 20:13:01.552963: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
実行しようとすると、ライブラリが無いと言われてエラーになる AWSでも動作しないわけではなさそうだが、一筋縄ではいかないみたい TensorFlowではGPU環境が必要だが、AWSでCentOS系で無料インストールできるもので…となるとAMIが無いみたい TensorFlow-GPUの環境構築(Amazon Linux) : シェルスクリプトとかperlとか http://blog.livedoor.jp/s06280hk/archives/1915199.html AWSインスタンス上にTensorFlow:GPGPU環境を作成する - 技術情報 | テクノスデータサイエンス・エンジニアリング株式会社 https://www.tdse.jp/tec_info/588/ AmazonLinux2にTensorFlow環境を構築する - Qiita https://qiita.com/ground0state/items/928e3a5dea02f1f44685 TensorFlow-GPUの環境構築(Amazon Linux) : シェルスクリプトとかperlとか http://blog.livedoor.jp/s06280hk/archives/1915199.html なお Raspberry Pi 環境にすんなりインストールできるのは、標準でGPUが搭載されているからみたい ラズパイ4の新GPUをハックしてディープラーニング推論を高速化、一体なぜ開発できた? | 日経Robotics(日経ロボティクス) https://xtech.nikkei.com/atcl/nxt/mag/rob/18/012600001/00062/

Advertisement