KafkaのJavaバージョン

参考

メモ

6.4 Java Version の通り、JDK1.8の最新リリースバージョンを使うように、とされている。 2019/11/03時点の公式ドキュメントでは、LinkedInでは1.8u5を使っているとされているが…。

このあたりの記述が最も最近でいつ編集されたか、というと、 以下の通り2018/5/21あたり。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
commit e70a191d3038e00790aa95fbd1e16e78c32b79a4
Author: Ismael Juma <ismael@juma.me.uk>
Date: Mon May 21 23:17:42 2018 -0700

KAFKA-4423: Drop support for Java 7 (KIP-118) and update deps (#5046)

(snip)

diff --git a/docs/ops.html b/docs/ops.html
index 450a268a2..95b9a9601 100644
--- a/docs/ops.html
+++ b/docs/ops.html
@@ -639,9 +639,7 @@

From a security perspective, we recommend you use the latest released version of JDK 1.8 as older freely available versions have disclosed security vulnerabilities.

- LinkedIn is currently running JDK 1.8 u5 (looking to upgrade to a newer version) with the G1 collector. If you decide to use the G1 collector (the current default) and you are still on JDK 1.7, make sure you are on u51 or newer. LinkedIn tried out u21 in testing, but they had a number of problems with the GC implementation in that version.
-
- LinkedIn's tuning looks like this:
+ LinkedIn is currently running JDK 1.8 u5 (looking to upgrade to a newer version) with the G1 collector. LinkedIn's tuning looks like this:
<pre class="brush: text;">
-Xmx6g -Xms6g -XX:MetaspaceSize=96m -XX:+UseG1GC
-XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M

関連しそうなIssue、メーリングリストのエントリ

あまり活発な議論はない。公式ドキュメントを参照せよ、というコメントのみ。 Jay Kepsによると2013年くらいはLinkedInでは1.6を使っていた、ということらしい。 順当に更新されている。

  • https://issues.apache.org/jira/browse/KAFKA-7328
  • https://sematext.com/opensee/m/Kafka/uyzND19j3Ec5wqz42?subj=Re+kafka+0+9+0+java+version
  • https://sematext.com/opensee/m/Kafka/uyzND138NFX1w26SP1?subj=Re+java+version+for+kafka+clients
共有

OpenMLを軽く確認してみる

参考

メモ

概要

OpenML公式ドキュメント によると、以下の定義。

An open, collaborative, frictionless, automated machine learning environment.

OpenML公式ウェブサイト によると、

  • Dataset
  • Task
    • データセットと機械学習としての達成すべきこと
  • Flow
    • 各種フレームワークに則った処理パイプライン
  • Run
    • あるFlowについてハイパーパラメータを指定し、あるTaskに対して実行したもの

のレポジトリが提供されている。 これらはウェブサイトから探索可能。

Dataset

Datasetが登録されると機械的にアノテーションされたり、分析されたりする。 パット見でデータの品質がわかるようになっている。

Task

データセットに対する目標(と言ってよいのか。つまり識別、回帰など)、学習用、テスト用のデータのスプリット、 どのカラムを目的変数とするか、などが セットになったコンテナである。

機械的に読めるようになっている。

Flow

処理パイプラインはFlowとして登録され、再利用可能になる。 特定のTaskに紐づく処理として定義される。

フレームワークにひもづく。

Run

OpenML APIを用いて実行ごとに自動登録される。

scikit-learnで試す

Pythonガイド を参考に試してみる。 一通り、Pandas、scikit-learn、openml、pylzmaをインストールする。 なお、あらかじめliblzma-devをインストールしておくこと。 詳しくは以下の「lzmaがインポートできない」節を参照。

実行に用いたpipenvの環境ファイル に用いたライブラリが載っている。

Pythonガイド を眺めながら進めようと思ったが、 https://openml.github.io/openml-python/develop/examples/introduction_tutorial.html のリンクが切れていた。 何となく見るとgithub.ioだったので探索してみたら、 github.ioのPythonガイド が見つかった。

こっちを参考にしてみる。

FlowとRunのチュートリアル を元に、チュートリアルを実施。 また特に、 公式Examples あたりを参考にした。 詳しくは、 dobachi openml_sklearn_example 内のnotebookを参照。

トラブルシュート

lzmaがインポートできない

以下の内容のエラーが生じた。

1
2
/home/dobachi/.local/share/virtualenvs/openml_sklearn_example-YW762zpK/lib/python3.7/site-packages/pandas/compat/__init__.py:85: UserWarning: Could not import the lzma module. Your installed Python is incomplete. Attempting to use lzma compression will result in a RuntimeError.
warnings.warn(msg)

lzma関連のlibをインストールしておいてから、Python環境を構築すること。 つまりpyenvとpipenvで環境構築する前にliblzma-devをインストールしておく。

1
$ sudo apt install liblzma-dev

参考: lzmaライブラリをインポートできません。

所感

歴史があり、情報が集まっている。 ドキュメントが中途半端なせいで、初見ではとっつきづらいかもしれないが、ライブラリひとつでデータ発掘・共有に始まり、処理パイプラインの機械化まで対応しているのは有益。

共有

pyenv を使う

参考

メモ

インストール手順

WSL / WSL2にインストールするには、 pyenvのGitHub の通り、以下のようにインストールする。

1
2
3
4
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc

トラブルシューティング

Common-build-problems に載っているが、前提となるパッケージのインストールが必要なことに注意。

古い内容のバックアップ

環境構築 - pipenv で Python 環境の構築方法 (2018年11月版) ではpipenvを使う前に、pyenvを使ってPython3最新環境を導入している。

自動インストール に自動インストール手順が記載されている。

共有

pipenvを試す

参考

メモ

上記の参考情報を見て試した。

WSL上でのpipenv

まずOS標準のPython環境を汚さないため、pyenvを導入した。 導入手段は、 pyenvのインストール手順 を参照。

導入した後、pyenvを使ってPython3.7.5を導入する。

1
2
3
$ pyenv install 3.7.5
$ pyenv global 3.7.5
$ pip install pipenv

さて、ここでpipenvを使おうとしたらエラーが生じた。 以下の参考に、 libffi-devを導入してPythonを再インストールしたらうまくいった。

https://stackoverflow.com/questions/27022373/python3-importerror-no-module-named-ctypes-when-using-value-from-module-mul

Pipenvことはじめ に大まかな使い方が載っている。

共有

Automagicaを試してみる

参考

メモ

総合的感想

用途ごとに個別に開発されているライブラリを統合して使えるのは便利。エントリポイントが統一化され、 from automagica import * ですべての機能が使えるのは画期的である。 しかし以下の点は少し課題を感じた。

  • ユーザ目線で似たもの同士に感じる機能に関し、APIが異なる
    • 具体的にはWord、Excel操作
    • ただし内部的に用いられるライブラリが別々のものなので致し方ない。(うまくすれば、APIレベルでも統合可能かもしれない)
  • 内部的に用いられているライブラリのAPIを直接利用したいケースがあるが少しわかりづらい
    • Automagicaが提供しているAPIよりも、内部的に用いられている元ネタのライブラリのAPIの方が機能豊富(少なくとも docx ライブラリはそうだと思う)
    • ということから、まずはAutomagicaのAPIを基本として使用しつつ、必要に応じて内部で用いられているライブラリのAPIを直接利用するのが良さそう。 実際に OpenWordDocument メソッドの戻り値は docx.Document クラスのインスタンス。 しかし1個目の課題と関連するが、その使い方を想起させるドキュメントやAPI仕様に見えない。 Word activities以外ではどうなのか、は、細かくは未確認。
  • ドキュメントにバグがちらほら見られるのと、ドキュメント化されていない機能がある。
    • これは改善されるだろう

Getting startedを試す

環境構築

AutomagicaのGetting started を参考にしつつ、動かしてみる。 Anacondaにはパッケージが含まれていなかった(conda-forge含む)のでpipenvを使って環境づくり。

1
2
3
> pipenv.exe --python 3.7
> pipenv.exe install jupyter
> pipenv.exe install https://github.com/OakwoodAI/automagica/tarball/master

なお、Python3.8系では依存関係上の問題が生じたので、いったん切り分けも兼ねて3.7で環境構築している。 AutomagicaのGetting started では、Tesseract4のインストールもオプションとして示されていたが、いったん保留とする。

Example 1の実行

Example 1 に載っていた例を動かそうとしたが、一部エラーが生じたので手直しして実行した。

エラー生じた箇所1:

ドキュメント上は、以下のとおり。

1
lookup_terms.append(ExcelReadCell(excel_path, 2, col))

しかし、行と列の番号で指定するAPIは、 ExcelReadRowCol である。 また、例に示されていたエクセルでは1行目に検索対象文字列が含まれているため、第2引数は 2 ではなく、 1 である。 したがって、

1
lookup_terms.append(ExcelReadRowCol(excel_path, 1, col))

とした。 なお、ExcelReadCellメソッド、ExcelReadRowColメソッドの実装は以下の通り。(2019/10/24現在)

automagica/activities.py:639

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def ExcelReadCell(path, cell="A1", sheet=None):
'''
Read a cell from an Excel file and return its value.
Make sure you enter a valid path e.g. "C:\\Users\\Bob\\Desktop\\RPA Examples\\data.xlsx".
The cell you want to read needs to be defined by a cell name e.g. "A2". The third variable
is a string with the name of the sheet that needs to be read. If omitted, the
function reads the entered cell of the active sheet.
'''
workbook = load_workbook(path)
if sheet:
worksheet = workbook.get_sheet_by_name(sheet)
else:
worksheet = workbook.active

return worksheet[cell].value

automagica/activities.py:656

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def ExcelReadRowCol(path, r=1, c=1, sheet=None):
'''
Read a Cell from an Excel file and return its value.
Make sure you enter a valid path e.g. "C:\\Users\\Bob\\Desktop\\RPA Examples\\data.xlsx".
The cell you want to read needs to be row and a column. E.g. r = 2 and c = 3 refers to cell C3.
The third variable needs to be a string with the name of the sheet that needs to be read.
If omitted, the function reads the entered cell of the active sheet. First row is defined
row number 1 and first column is defined column number 1.
'''
workbook = load_workbook(path)
if sheet:
worksheet = workbook.get_sheet_by_name(sheet)
else:
worksheet = workbook.active

return worksheet.cell(row=r, column=c).value

エラーが生じた箇所2:

ドキュメント上では、読み込んだ文字列のリストをそのまま使っているが、 そのままではリスト後半に None が混ざることがある。 そこで、リストをフィルタするようにした。

1
lookup_terms = list(filter(lambda x: x is not None, lookup_terms))

エラーが生じた箇所3:

ドキュメント上では、以下の通り。

1
ExcelWriteCell(excel_path, row=i+2, col=j+2, write_value=url)

これも読み込みの場合と同様にAPIが異なる。合わせて引数名が異なる。そこで、

1
ExcelWriteRowCol(excel_path, r=i+2, c=j+2, write_value=url)

とした。

共有

Seleniumを試してみる

参考

メモ

日常生活の簡単化のために使用。 【超便利】PythonとSeleniumでブラウザを自動操作する方法まとめ を試す。

環境構築

Condaを使って環境を作り、seleniumをインストールした。 WebDriverは自分の環境に合わせて、Chrome77向けのものを使用したかっただが、 WSLでChromeを使おうとすると、--no-sandboxをつけないと行けないようだ。 詳しくは、 ブラウザのヘッドレスモードでスクショ 及び 【WSL】にFirefox&Google-Chromeをインストールする方法! を参照。

geckodriver を使うことにした。

また、当初は 【超便利】PythonとSeleniumでブラウザを自動操作する方法まとめ を参考にしようとしたが、 途中から PythonからSeleniumを使ってFirefoxを操作してみる を参考にした。

動作確認ログは、 selenium_getting_started を参照。

便利な情報源

Selenium関連

おまけ

共有

Conferences at Dec. 2019

参考

Middleware 2019

LISA19

USENIX ATC'20

IEEE Big Data 2019

メモ

気になるカンファレンスをメモ。

ACM/IFIP International Conference MIDDLEWARE 2019

ACM/IFIP International Conference MIDDLEWARE 2019

2019/12/9 - 13

UC DAVIS, CA, US

悪くなさそう。

趣旨

The annual Middleware conference is a major forum for the discussion of innovations and recent scientific advances of middleware systems with a focus on the design, implementation, deployment, and evaluation of distributed systems, platforms and architectures for computing, storage, and communication. Highlights of the conference will include a high quality single-track technical program, invited speakers, an industrial track, panel discussions involving academic and industry leaders, poster and demonstration presentations, a doctoral symposium, tutorials and workshops.

ということから、ミドルウェアに関する技術要素についてのカンファレンスと理解。

キーノートスピーカー

  • Brian F. Cooper (Google)
    • Title: Why can't the bits sit still? The never ending challenge of data migrations.
  • Monica Lam (STANFORD UNIVERSITY)
    • Title: Building the Smartest and Open Virtual Assistant to Protect Privacy
  • Ion Stoica (BERKELEY)
    • Title: To unify or to specialize?

採録論文

Middleware 2019 - Accepted Papers に一覧が載っている。

気になった論文は以下の通り。

  • Scalable Data-structures with Hierarchical, Distributed Delegatio
  • FfDL: A Flexible Multi-tenant Deep Learning Platform
  • Monitorless: Predicting Performance Degradation in Cloud Applications with Machine Learning
  • Automating Multi-level Performance Elastic Components for IBM Streams
  • Self-adaptive Executors for Big Data Processing
  • Differential Approximation and Sprinting for Multi-Priority Big Data Engines
  • Combining it all: Cost minimal and low-latency stream processing across distributed heterogenous infrastructures
  • ReLAQS: Reducing Latency for Multi-Tenant Approximate Queries via Scheduling
  • Medley: A Novel Distributed Failure Detector for IoT Network

LISA19

LISA19

概要

LISA is the premier conference for operations professionals, where we share real-world knowledge about designing, building, securing, and maintaining the critical systems of our interconnected world.

とのことであり、開発や運用に関するカンファレンス。

Conference Program

LISA19 conference program

気になったセッションは以下の通り。

  • Pulling the Puppet Strings with Ansible
  • Linux Systems Performance
  • The Challenges of Managing Open Source Infrastructure at Bloomberg
  • Jupyter Notebooks for Ops
  • その他Kubernetes関連のセッションが複数

2020 USENIX Conference on Operational Machine Learning

USENIX OpML'20

May 1, 2020

Santa Clara, CA, United States Hyatt Regency Santa Clara

USENIX ATC '20

USENIX ATC20

JULY 1517, 2020 BOSTON, MA, USA

IEEE Big Data 2019

IEEE Big Data 2019

Los Angeles, CA, USA 9-12, Dec.

気にはなる。

参考: IEEE Big Data 2018の気になった論文リスト

2018年度の気になった論文によると、情報システムというよりは要素技術や分析手法などの方が主旨のようだ。

共有

Scraping with session information using Python

参考

メモ

あとでメモを追加する

共有

Redshift vs. Snowflake

参考

メモ

RedshiftとSnowflakeを長所、短所の面からまとめた記事。 特にSnowflakeにしかない特徴を紹介する部分は、初心者には参考になりそう。

共有

Efficient and Robust Automated Machine Learning

参考

論文メモ

気になったところをメモする。

概要

いわゆるAutoMLの一種。 特徴量処理、アルゴリズム選択、ハイパーパラメータチューニングを実施。 さらに、メタ学習とアンサンブル構成も改善として対応。 scikit-learnベースのAutoML。

auto-sklearnと呼ぶ。

GitHub上にソースコードが公開されている。

同様のデータセットに対する過去の性能を考慮し、アンサンブルを構成する。

ChaLearn AutoMLチャレンジで勝利。

OpenMLのデータセットを用いて、汎用性の高さを確認した。

2019/11時点では、識別にしか対応していない?

1. Introduction

以下のあたりのがAutoML周りのサービスとして挙げられていた。

1
2
BigML.com, Wise.io, SkyTree.com, RapidMiner.com, Dato.com, Prediction.io, DataRobot.com, Microsoft’s Azure Machine
Learning, Google’s Prediction API, and Amazon Machine Learning

Auto-wekaをベースとしたもの。

パラメトリックな機械学習フレームワークと、ベイジアン最適化を組み合わせて用いる。

特徴

  • 新しいデータセットに強い。ベイジアン最適化をウォームスタートする。
  • 自動的にモデルをアンサンブルする
  • 高度にパラメタライズされたフレームワーク
  • 数多くのデータセットで実験

2 AutoML as a CASH problem

ここで扱う課題をCombined Algorithm Selection and Hyperparameter optimization (CASH) と呼ぶ。

ポイントは、

  • ひとつの機械学習手法がすべてのデータセットに対して有効ではない
  • 機械学習手法によってはハイパーパラメータチューニングが必要

ということ。 それらを単一の最適化問題として数式化できる。

Auto-wekaで用いられたツリーベースのベイジアン最適化は、ガウシアンプロセスモデルを用いる。 低次元の数値型のハイパパラメータには有効。 しかし、ツリーベースのアルゴリズムは高次元で離散値にも対応可能。 Hyperopt-sklearnのAutoMLシステムで用いられている。

提案手法では、ランダムフォレストベースのSMACを採用。

3 New methods for increasing efficiency and robustness of AutoML

提案手法のポイント

  • ベイジアン最適化のウォームスタート
  • アンサンブル構築の自動化

まずウォームスタートについて。

メタ学習は素早いが粗い。ベイジアン最適化はスタートが遅いが精度が高い。 これを組み合わせる。

既存手法でも同様の試みがあったが、複雑な機械学習モデルや多次元のパラメータには適用されていない?

OpenML を利用し、メタ学習。

つづいてアンサンブル構築について。

単一の結果を用いるよりも、アンサンブルを組んだほうが良い。 アンサンブル構成の際には重みを用いる。重みの学習にはいくつかの手法を試した。 Caruana et al. のensemble selectionを利用。

5 Comparing AUTO-SKLEARN to AUTO-WEKA and HYPEROPT-SKLEARN

AUTO-SKLEARNをそれぞれ既存手法であるAUTO-WEKAとHYPEROPT-SKLEARNと比較。 (エラーレート?で比較)

AUTO-WEKAに比べて概ね良好。 一方HYPEROPT-SKLEARNは正常に動かないことがあった。

6 Evaluation of the proposed AutoML improvements

OpenMLレポジトリのデータを使って、パフォーマンスの一般性を確認。 テキスト分類、数字や文字の認識、遺伝子やRNAの分類、広告、望遠鏡データの小片分析、組織からのがん細胞検知。

メタ学習あり・なし、アンサンブル構成あり・なしで動作確認。

7 Detailed analysis of AUTO-SKLEARN components

ひとつひとつの手法を解析するのは時間がかかりすぎた。

ランダムフォレスト系統、AdaBoost、Gradient boostingがもっともロバストだった。 一方、SVMが特定のデータセットで性能高かった。

どのモデルも、すべてのケースで性能が高いわけではない。

個別の前処理に対して比較してみても、AUTO-SKLEARNは良かった。

動作確認

依存ライブラリのインストール

auto-sklearnのドキュメント を参考に動かしてみる。

予め、ビルドツールをインストールしておく。

1
$ sudo apt-get install build-essential swig

pipenv使って環境構築

pipenvを使って、おためし用の環境を作る。

1
$ pipenv --python 3.7

依存関係とパッケージをインストールしようとしたらエラーで試行錯誤

今回はpipenvを使うので、公式手順を少し修正して実行。(pip -> pipenvとした)

1
curl https://raw.githubusercontent.com/automl/auto-sklearn/master/requirements.txt | xargs -n 1 -L 1 pipenv install

なお、requirementsの中身は以下の通り。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
setuptools
nose
Cython

numpy>=1.9.0
scipy>=0.14.1

scikit-learn>=0.21.0,<0.22

lockfile
joblib
psutil
pyyaml
liac-arff
pandas

ConfigSpace>=0.4.0,<0.5
pynisher>=0.4.2
pyrfr>=0.7,<0.9
smac==0.8

論文の通り、SMACが使われるようだ。

つづいて、auto-sklearn自体をインストール。 (最初から、これを実行するのではだめなのだろうか?勝手に依存関係を解決してくれるのでは?)

1
$ pipenv run pip install auto-sklearn

なお、最初に pipenv install auto-sklearn していたのだがエラーで失敗したので、上記のようにvirtualenv環境下でpipインストールすることにした。 エラー内容は以下の通り。

1
2
3
4
5
6
7
8
9
10
11
12
(snip)

[pipenv.exceptions.ResolutionFailure]: req_dir=requirements_dir
[pipenv.exceptions.ResolutionFailure]: File "/home/dobachi/.pyenv/versions/3.7.5/lib/python3.7/site-packages/pipenv/utils.py", line 726, in resolve_deps
[pipenv.exceptions.ResolutionFailure]: req_dir=req_dir,
[pipenv.exceptions.ResolutionFailure]: File "/home/dobachi/.pyenv/versions/3.7.5/lib/python3.7/site-packages/pipenv/utils.py", line 480, in actually_resolve_deps
[pipenv.exceptions.ResolutionFailure]: resolved_tree = resolver.resolve()
[pipenv.exceptions.ResolutionFailure]: File "/home/dobachi/.pyenv/versions/3.7.5/lib/python3.7/site-packages/pipenv/utils.py", line 395, in resolve
[pipenv.exceptions.ResolutionFailure]: raise ResolutionFailure(message=str(e))
[pipenv.exceptions.ResolutionFailure]: pipenv.exceptions.ResolutionFailure: ERROR: ERROR: Could not find a version that matches scikit-learn<0.20,<0.22,>=0.18.0,>=0.19,>=0.21.0

(snip)

作業効率を考え、Jupyterをインストールしておく。

1
$ pipenv install jupyter

つづいて公式ドキュメントの手順を実行。

以下を実行したらエラーが出た。

1
import autosklearn.classification
1
ModuleNotFoundError: No module named '_bz2'

scikit-learn で No module named '_bz2' というエラーがでる問題 の通り、 bzip2に関する開発ライブラリが足りていない、ということらしい。 パッケージをインストールし、Pythonを再インストール。pipenvのvirtualenv環境も削除。 その後、pipenvで環境を再構築。

1
2
3
4
$ sudo apt install libbz2-dev
$ pyenv install 3.7.5
$ pipenv --rm
$ pipenv install

なお、sklearnのバージョンでやはり失敗する? よくみたら、pypiから2019/11/1時点でインストールできるライブラリは0.5.2であるが、 公式ドキュメントは0.6.0がリリースされているように見えた。 また対応するscikit-learnのバージョンが変わっている…。

依存関係のインストールとパッケージのインストール(2度め)

致し方ないので、依存関係のライブラリはpipenvのPipfileからインストールし、 auto-sklearnはGitHubからダウンロードしたmasterブランチ一式をインストールすることにした。

1
2
$ pipenv install
$ pipenv install ~/Downloads.win/auto-sklearn-master.zip

改めてJupyter notebookを起動

1
$ pipenv run jupyter notebook

以下を実行したら、一応動いたけど…

1
import autosklearn.classification

少し警告

1
Could not import the lzma module. Your installed Python is incomplete.

sklearn関係もインポート成功。

1
2
3
import sklearn.model_selection
import sklearn.datasets
import sklearn.metrics

学習データ等の準備

1
2
3
X, y = sklearn.datasets.load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = \
sklearn.model_selection.train_test_split(X, y, random_state=1)

学習実行

1
2
automl = autosklearn.classification.AutoSklearnClassifier()
automl.fit(X_train, y_train)

実行したらPCのCPUが100%に張り付いた!

1
2
y_hat = automl.predict(X_test)
print("Accuracy score", sklearn.metrics.accuracy_score(y_test, y_hat))

参考)CentOS7ではSwig3をインストールすること

CentOSで依存関係をインストールするときには、 swig ではなく swig3 を対象とすること。

でないと、以下のようなエラーが生じる。

1
2
3
4
5
(snip)

----------------------------------------', 'ERROR: Command errored out with exit status 1: /home/centos/.local/share/virtualenvs/auto-sklearn-example-hzZc_yaE/bin/python3.7m -u -c \'import sys, setuptools, tokenize; sys.argv[0] = \'"\'"\'/tmp/pip-install-53cbwkis/pyrfr/setup.py\'"\'"\'; __file__=\'"\'"\'/tmp/pip-install-53cbwkis/pyrfr/setup.py\'"\'"\';f=getattr(tokenize, \'"\'"\'open\'"\'"\', open)(__file__);code=f.read().replace(\'"\'"\'\\r\\n\'"\'"\', \'"\'"\'\\n\'"\'"\');f.close();exec(compile(code, __file__, \'"\'"\'exec\'"\'"\'))\' install --record /tmp/pip-record-udozwz5v/install-record.txt --single-version-externally-managed --compile --install-headers /home/centos/.local/share/virtualenvs/auto-sklearn-example-hzZc_yaE/include/site/python3.7/pyrfr Check the logs for full command output.']

(snip)

メモリエラー

EC2インスタンス上で改めて実行したところ、以下のようなエラーを生じた。

1
2
3
4
5
6
7
8
9
(snip)

File "/home/centos/.local/share/virtualenvs/auto-sklearn-example-hzZc_yaE/lib/python3.7/site-packages/autosklearn/smbo.py", line 352, in _calculate_metafeatures_encoded

(snip)

ImportError: /home/centos/.local/share/virtualenvs/auto-sklearn-example-hzZc_yaE/lib/python3.7/site-packages/sklearn/tree/_criterion.cpython-37m-x86_64-linux-gnu.so: failed to map segment from shared object: Cannot allocate memory

(snip)

これから切り分ける。

共有