スポンサーリンク
ネット上に情報がなく、色々試行錯誤したので後からまた同じことやる時のための備忘録。
fastTextをLambdaのLayersとして作成するためのポイントは、以下3つ。
- python2.7を使う
- Amazon Linux環境で行う
- pythonというフォルダに格納し、zip化する
まず1.について、Lambdaは以下のpythonしかサポートしていない。(2019年2月現在)
- python2.7
- python3.6
- python3.7
一方、fastTextで使用可能なpythonは以下。
- 〜python2.7
- 〜python3.5
つまり、python2.7でレイヤー作成しなければならない。
2.について、Layer化するzipをAmazon Linux環境で作成するため、EC2を利用する。
なぜかというと、pipでインストールする際にバイナリファイルを生成するのだが、別環境でのバイナリ形式が異なるため「invalid ELF header」というエラーが発生してそのレイヤーは使えない。
必ずAmazon Linux環境でレイヤー作成する必要がある。
3.については、Lambdaの仕様になるのだが、ライブラリをレイヤー作成するとpythonフォルダ配下を見るようになっているので、必ずpythonフォルダを作成しその中へインストールする。
以上のことを踏まえると、fastTextのレイヤーは以下のように作成できる。
(EC2 Amazon Linux環境)
$ cd ~ $ git clone https://github.com/facebookresearch/fastText.git $ cd fastText $ make $ pip install Cython $ mkdir ~/python $ pip install --install-option="--prefix=~/python" fasttext $ cd .. $ zip -r fastText.zip python
参考サイト
Lambdaの「invalid ELF header」エラーを解消する – EC2からlambda-uploaderを使用してLambdaにデプロイする方法
スポンサーリンク
スポンサーリンク