Install_vim8_on_centos7

参考

メモ

copr.fedorainfracloud.orgというサイトを使っているということで、 あまりお作法のよくない方法ではあるが動作はする。 どうしてもCentOS7でDein使いたい、というケースにおいて有効。

共有

Manifold of Uber

参考

O'Reillyの記事

プロダクト概要

モデル管理をより視覚的に行いやすくするためのツール ManifoldをUberが開発した。 モデル性能劣化の潜在的な要因を探すのに役立つ。 また、あるデータセットに関して、各モデルがどういった性能を示すかを可視化し、 モデル化以前の工夫の効果を測ることが出来る。

既存のモデル可視化ツールは、特定のツール、アルゴリズムの内部状態を示す物が多かった。 Manifoldはモデル性能を改善/改悪するデータセグメントを見つける。 それらがアグリゲートされた評価も示す。これはアンサンブル手法にとって使いやすい。

現時点では、回帰と識別器に対応。

今のところオープンソース化はされていないようだ。

機能

Visualization and workflow designの箇所に図ありで説明がされている。

  • 性能比較ビュー
    • 横軸:メトリクス、縦軸:データセグメント、色:モデル、という形で視覚的に モデルの傾向を確認できる
  • 特徴ごとの比較ビュー
    • 横軸:特徴空間、縦軸:データポイント数、色:データセグメント、という形で 視覚的にモデルの傾向を確認できる

グラフを表示ながら以下のような操作を加えて確認可能

  • クラスタ数を変えながら、特徴がどのように変化するかを確認
  • スライス(領域を区切ってズーム)
  • 特徴の差の大きさ(?)にフィルタをかけて、気になる点を探す

より直感的な皮革のための取り組み

またコンセプトとしては、さらに

  • 横軸の性能
  • 縦軸に特徴

という形で視覚化する方法が挙げられているが、まだ課題も挙げられている。 (例:データ点数が多くなりがちなので抽象化の仕組みが必要、など)

そこでManifoldではデータセグメントをクラスタ化して見やすくする、などの工夫が施されている。

アーキテクチャ

PythonとJavaScriptのそれぞれを好きな方を使える。 これにより、Uber内の他のフレームワークと連携しやすくなっている。

ただしJavaScriptでクラスタリングなどを計算させると遅いことから、 TensorFlow.jsを用いている。

ユースケース

モデルの工夫の効果の確認

Uber eatsでの機械学習による配達時間短縮事例 に記載の事例にて、 モデル比較のため使用。 モデル改善の工夫の評価をする際にManifoldを使用。 これにより、特定のデータセグメントに改善効果があることがわかった。

False Negativeの低減のための分析

Safetyチームによる利用。 False Negativeレートの改善のために利用。 あるモデルがNegativeとしたデータセグメントについてドリルダウン分析。 当該モデルは、ある特徴の値が小さいときにNegativeと判定する傾向があることがわかった。 しかし実際にはその中にはPositiveなものも含まれいる。 ここから、その特徴に着目し、より差をつけやすい特徴を用いたり、モデルを用いるような工夫を施した。

共有

Create BigTop environment on Docker

参考

メモ

Dockerでのクラスタ構築を紹介するブログ公式の手順 を参考に試した。 基本的には、前者のブログの記事通りで問題ない。

Sparkも試す

以下のようにコンポーネントに追加してプロビジョニングするとSparkも使えるようになる。

1
2
3
4
5
6
7
8
9
10
11
12
13
diff --git a/provisioner/docker/config_centos-7.yaml b/provisioner/docker/config_centos-7.yaml
index 49f86aee..0f611a10 100644
--- a/provisioner/docker/config_centos-7.yaml
+++ b/provisioner/docker/config_centos-7.yaml
@@ -19,6 +19,6 @@ docker:

repo: "http://repos.bigtop.apache.org/releases/1.3.0/centos/7/$basearch"
distro: centos
-components: [hdfs, yarn, mapreduce]
+components: [hdfs, yarn, mapreduce, spark]
enable_local_repo: false
-smoke_test_components: [hdfs, yarn, mapreduce]
+smoke_test_components: [hdfs, yarn, mapreduce, spark]
共有

WhereHows by LinkedIn

参考

ユースケースについて

ユースケース に背景などが記載されている。 複数のデータソース、複数のデータストア、複数のデータ処理エンジン、そしてワークフロー管理ツール。 LinkedInの場合は以下のとおり。

  • Analytics Storage system: HDFS, Teradata, Hive, Espresso, Kafka, Voldemort
  • Execution: MapReduce, Pig, Hive, Teradata SQL.
  • Workflow management: Azkaban, Appworx, Oozie

ユースケースは以下の通り。

  • 新任の人が立ち上がりやすいようにする
  • データセットを見つけられるようにする
  • ジョブやデータの変更が及ぼす影響を確認する

機能概要

Wikiに画面キャプチャ付きで説明がある。 GUIの他、バックエンドAPIもあり、自動化できるようになっている。

例:https://github.com/LinkedIn/Wherehows/wiki/Backend-API#dataset-get

アーキテクチャ

Architecture に記載されている。 Akkaベースでスケジューラが組まれており、スケジューラによりクローラが動く。

データセットやオペレーションデータがエンドポイトであり、リネージがそれを結ぶブリッジであると考えられる。 またこれらは極力汎用的に設計されているので、異なるプロダクトのデータを取り入れることができる。

バックエンドのETLについて

Java、Jython、MySQLで構成。 分析ロジックの実装しやすさとほかシステムとの連携しやすさを両立。

  • Dataset ETL
    • HDFS内をクロールする
  • Operation data ETL
    • フロー管理ツールのログなどをクロールし、所定の形式に変換する
  • Lineage ETL
    • 定期的にジョブ情報を取得し、入力データと出力データの定義から リネージを生成する
共有

LinkedIn WareHows

参考

メモ

  • links data objects with people and processes
  • enables crowdsourcing for data knowledge
  • provides data governance and provenance based on ownership and lineage
共有

Mount host's filesystem on KVM

参考

メモ

マウントの仕方を示しているブログ の通りで問題ない。

補足

「ハードウェアの追加」から「ファイルシステム」を追加する。

ゲストOSでマウントするときに、ディレクトリを作成し忘れないこと。

手動でマウント

1
$ sudo mount -t 9p -o trans=virtio hostdata /mnt/data

fstabには以下のように記載

1
hostdata	/mnt/data	9p	trans=virtio	0	1
共有

Buy Windows10 licenses

共有

Docker for Windows with WSL

参考

メモ

上記ブログ 動かし方を紹介するブログ の内容で基本的に問題ない。 ただし、一般ユーザの.bashrcに環境変数DOCKER_HOSTを指定したので、 一般ユーザでDockerを起動できるようにしておいた。 (当該一般ユーザをdockerグループに加えた)

コマンド

コンテナ確認

1
2
$ docker ps
$ docker ps -a

-vを用いてボリュームをマウント。 ついでに--rmを用いて停止後に削除することにする。

1
$ docker run -it --rm -v c:/Users/<user name>:/mnt/<user name> <image id> /bin/bash
共有

Hyper-V機能のオン・オフを切り替える

参考

メモ

基本的には、 切り替えようPowerShellスクリプトを掲載してくれているサイト のとおりで問題ない。 パス等は環境に合わせること。

共有

Try Apache Superset

参考

動作確認

公式ウェブサイトのインストール手順 の「Start with Docker」のとおり、進めてみたところ、 トップ画面がうまく表示されない事象が生じたので、ここでは改めてCentOS7環境に構築してみることにする。

必要パッケージのインストール

以下が指定されていたが、libsasl2-develだけ無いというエラーが出た。

1
gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel

Issue 2205 を見ると、cyrus-sasl-develであれば存在するようだ。

セットアップ

/opt/virtualenv/superset 以下にvirtualenv環境を作り、supersetをインストールしたものとする。 その上で、公式ドキュメントを参考に以下のようなコマンドを実行する。(極力対話設定を減らしている)

1
2
3
$ source /opt/virtualenv/superset/bin/activate
$ fabmanager create-admin --app superset --username admin --firstname admin --lastname admin --password admin --email admin@fab.org
$ superset db upgrade

以下のようなエラーが出た。

1
Was unable to import superset Error: cannot import name '_maybe_box_datetimelike'(superset) [vagrant@superset-01 ~]$ superset db upgrade

[Issue 6670] を見ると、Pandasの新しいバージョンに起因する問題らしく、バージョンを下げることで対応可能だそうだ。

1
2
$ pip uninstall pandas
$ pip install pandas==0.23.4

してから、以下の通り改めて実行。

1
2
3
4
$ fabmanager create-admin --app superset --username admin --firstname admin --lastname admin --password admin --email admin@fab.org
$ superset db upgrade
$ superset load_examples
$ superset init

上記を実行し、サーバの8088ポートをブラウザで開けば、トップが画面が表示される。

共有