pandazx's blog

データ分析など雑多な技術ブログ

Openstack Swiftコマンドメモ

Swiftをコマンドラインから操作する方法メモ

コンテナ操作

# リスト表示
openstack container list
# 作成
openstack container create {container_name}
# 削除
openstack container delete {contaier_name}
# オブジェクトが残っていてコンテナが削除できない場合は以下のコマンドで削除
openstack container delete -r {contaier_name}

オブジェクト操作

# リスト表示
openstack object list
# 登録
openstack object create {contaier_name} {filepath}
# 削除
openstack object delete {contaier_name} {filepath}
# 取得
swift download {contaier_name} {filepath} -o {output path}

メルカリ CRE Server Side Tech Talk vol.2に行ってきた

mercari.connpass.com

に行ってきた。以下はメモ

CREチームの紹介

  • CREとは、お客様からの信頼性向上を目指すエンジニア
  • 元々はCXIで、カスタマーセンターCSのサポートがメインだった
  • これをメルカリのユーザーにまで対象を広げた

メルカリの商品監視を支える技術

機械学習によるマーケット健全化を支える技術

  • LovemachineというML基盤を独自開発しており、OSS公開予定だが、人手が足りなくて、あまり進んでいない

機械学習によるマーケット健全化の施策

  • スピーカーの自己紹介
    • Solarのクエリチューニング
    • 近所検索を開発
  • CSには偽ブランドを見分ける鑑定士がいる
  • 質問
    • 商品監視の機械学習モデルは複数ある?複数の結果をどう解釈してる?
    • 監視目的別にモデルがある

「アプリケーションエンジニアのためのApache Spark入門」出版記念セミナーに行ってきた

connpass.com

に行ってきた。以下はメモ

Apache Spark入門書籍の紹介

  • 理論よりも使い方に重きを置いた入門書
  • サンプルのプログラミング言語Python
  • データ分析基盤に使われるOSS紹介
  • データ収集はfluentd, kafka
  • データ蓄積はhdfs, cassandra
  • ストリーム処理、簡易な集計分析はSpark structured streaming
  • バッチ処理はSpark SQL
  • データ分析はSpark MLlib, Jupyter
  • Sparkが注目されている理由はデータ分析プラットフォームの主要な機能があるため

Fluentd, Kafkaの紹介

  • 残念ながらスピーカーが私用のため、欠席

Spark Streamingについて

  • ストリーム処理はデータが無限
  • バッチ処理はデータが有限
  • ただ、Spark Streamingはマイクロバッチなので、データを有限として扱う
  • Spark2.3.0から継続実行方式が可能になる
  • ストリーム処理で発生する問題
  • データが発生した順に到着しない。out of order. ネットワーク遅延やサーバ間の時刻ズレなどが原因
  • データのグルーピングの概念
  • タンブリングウィンドウは固定長で区切る方式
  • スライディングウィンドウは固定長だが、スライド幅が異なる方式
  • セッションウィンドウは特定キー、特定時間内のデータを同一ウィンドウにまとめて処理する方式
  • 実際に到着が遅れて困る例。データが大幅に遅れると、どこまで、その遅れを待てばいいのか検討が必要
  • 対応方法としては、データ発生時刻とデータ処理時間を分けて管理する。加えてDBへの投入時間を管理する場合もある
  • どこまで処理したかの管理はwater markで管理
  • データ発生時刻が一定時間以上古い場合は除外する
  • 出力する値や集計方式として、処理完了したもの、追加部分のみ、更新部分のみを選択可能
  • これらのサンプルプログラムが書籍に記載されている

データの蓄積

  • Spark SQLとCassandraの紹介
  • Spark処理結果を出力先として、Cassandraがオススメ

データ分析について

  • データ分析プロセスCRISP-DM
  • 他にKDD,SEMMAがある
  • 資料は後日、公開

プロダクション投入に向けて

  • Sparkは計算資源といえる。そのため、ステートレス化できる。今風に言えばサーバレスにできる
  • AWS Glueを使うとHdoopクラスタなしにSparkを使える。GlueにHive metastoreを置いて、実データはS3に置く構成

サイバーエージェントの機械学習祭りに行ってきた

www.wantedly.com

に行ってきた。以下はメモ。

推薦アルゴリズムの今までとこれから

スピーカー:サイバーエージェント 内藤 遥

推薦アルゴリズムの種類

  • 協調フィルタリング
    • データがないと機能しない
  • コンテンツベース
    • データがなくても大丈夫。商品の特徴量を使う

GroupLens

Matrix Factorization

  • Netflix Prizeで登場したアルゴリズム
  • ユーザの暗黙的評価。閲覧1、お気に入り2、購入3という評価値とするなど

Factorization Machines

  • MFの改善手法
  • ただ、MFより予測の計算量が多い。TopNの算出に時間がかかる
  • 特徴量にドメイン知識が必要

RNN

  • 時間による変遷を考慮できる
  • クライアントブラウザの種類などのコンテキストを考慮できる

Collaborative Metric Learning

  • オンラインで近似的に高速に解ける
  • Amebaで注目してる手法

Amebaの推薦基盤

マルチメディア機械学習の取り組み

スピーカー:サイバーエージェント 藤坂 祐介

アメブロ画像カテゴライズ

  • ブログのAmeba公式ジャンルのカテゴライズを自動化したい
  • NLP+投稿画像認識
  • 内製のラベル付け管理ツールで30万枚の画像をタグ付け
  • 分類精度。t-SNE. top1 82.73%
  • アルゴリズムはKerasでResNet

スパム画像検知

  • エログロなどのスパム画像を検出したい
  • スパム画像は全体の0.1%
  • アルゴリズムはKerasでResNet
  • 教師データは日々の監視業務で作成
  • いい精度が出ていない

次の課題。マッチングアプリで業者が同じようなプロフィール画像を使い回すユーザがいるので検出したい

  • 画像をdhashで64次元に変換
  • Humming距離で類似度を計算
  • 7,8bitで良い精度が出て、実際に使われている

楽曲の盛り上がり検知をやってみた

  • 課題は楽曲のサビ検知
  • メロディ、サビ、その他の3分類で精度評価して、分類精度51%

大規模分散深層学習とChainerMNの進歩と課題

スピーカー:PFN 秋葉 拓哉

  • ChainerMNのMNはMulti Nodeの略
  • 分散深層学習を非同期でやるよりも、同期でやった方が精度が高い。大事なのはスループットではなく精度
  • ChainerからChainerMNに移行する際のコードの変更量は少ない
  • 2016年では分散深層学習すると精度が落ちる。しかし、2017年には精度が保てるようになった。しかも高速
  • 分散深層学習で2-3週間かかっていたものが256GPUsで1時間まで短縮されたが、PFNは1024GPUsで15分まで短縮した
  • 非同期型はネットワークの状況によって学習結果が異なるため、扱いづらい、チューニングしづらいのが難点
  • マルチノード構成にした場合、1Gbでは1台より遅くなる。10Gbで遅くならないぐらい。40Gbで戦えるかもレベルだが、未検証

cronで実行したシェルから呼ばれるRubyスクリプトの標準出力が出力されない

test.sh

#!/bin/sh
ruby test.rb
echo done

test.rb

puts 'hoge'

上記スクリプトがあった場合に、以下のようにcronを設定しても、test.sh のdoneしかtest.logには出力されない。

0 * * * * cd /home/user/tools; sh test.sh >> ./test.log

cronで実行される際、環境変数は実行ユーザでログインした場合はとは異なるという問題もある。

参考:cronで実行時に環境変数を読み込む - Qiita

以下のようにして環境変数を読み込む -l オプションをつけて、-c でコマンドを実行させればよい。

0 * * * * /bin/bash -lc 'cd /home/user/tools; sh test.sh >> ./test.log'

NEDO AI ベンチャーコンテスト採択企業5社の開発責任者が語る開発の最前線に行ってきた

【エンジニア向けイベント】人工知能の未来を語る ~ NEDO AI ベンチャーコンテスト採択企業5社の開発責任者が語る開発の最前線 ~
https://techplay.jp/event/658548

 

■1社目 Hmcomm
音声認識をやっている。音のプラットホームがライセンスビジネスで、その上にある音のソリューションで、SI向け

 

事例

  • 受付に人のいないホテル
  • 工場などの騒音環境で、雑音除去
  • コールセンターのオペレータとお客様の会話を音声認識して、帳票出力
  • 対話の返答は自動生成
  • 駅の遺失物問合せの自動対応

 

End2Endの音声認識

音声波形をCNNで画像認識的なアプローチを研究中。

 

マイク素子の単価が下がってきており、ハードウェアが作りやすくなってきている。

 

チューニングレスな最新手法の実利用はまだ難しい。まだ、チューニングが必要な状況。

 

マシン2テキストを研究中。

 

■2社目 アースアイズ
五感AIカメラ

  • 五感の内の1つ、目に関する機能について。
  • カメラが自動的に不審者を発見する。
  • 予測、予知して未然防止。
  • 独自に3D測距カメラを開発。20cm四方エリアに区分できる特許技術を保有

 できること

  • 人流分析:人の頭の位置をトラッキング
  • 商品移動:物が置かれた、持っていかれたことの認識
  • 万引き検知:ハードウェア費を除いた2350円/月

 

不審検知はレーザーでやってるので、夜でも大丈夫

万引き犯以外の泥棒などにも応用可能。イチからの開発は不要。

 

検出時の店員への伝え方

  • アプリを提供している。
  • カメラから音声を流したり、光ったりする。

 

■3社目 シナモン
契約書類関連のバックオフィス業務を改善

 

プロダクト

  • 文書読み取りエンジン。flax sccaner
  • チャットボット
  • レコメンデーション

 

今日はflax sccanerについて。

  • 不特定の帳票から必要な情報を読み取る。
  • pdf、word、メールなどに対応。

事例:銀行証券、保険の書類業務効率化

 

DLモデルを作るのは全体の一部で、システムとして成立させるためには、前処理、validationや変換などソフトウェア開発の方が比重が大きい。

 

ベトナムの大学からハイアリングする仕組みが出来ている。AIチームが30人。500人体制にしていきたい。

 

どのぐらい作業時間短縮につながる?ビジネス的な評価KPIは?

  • PoCで50人を25人にするぐらいの効果が得られている。
  • 契約書の処理はAIでの自動判断が許されないので、人がダブルチェックできるなどのアプリを提供している。すべてをAIで自動処理は目指していない。

 弁護士業務の単純作業は自動化できる。

 

■4社目 SOINN
Self Organization Incremental Neulal Networksの頭文字がSOINN

  •  汎用型の人口知能。社内で育てる人工知能
  • 教師なしクラスタリング
  • クラス数も自動算出。
  • 学習量が少ない。
  • 画像なら400枚実運用投入したこともある。地中レーダーをつけた車で走って、地下の地盤沈下の危険性をチェック。危険箇所の検出

 

目視検査。現場で熟練者がトレーニングして学習させる。

今回のNEDOではスマホでこの人工知能を育てるプロジェクト。

 

■5社目 BEDORE
対話型IFによる非構造化データ検索

対話エンジンがあり、接客、コールセンターの自動化、半自動化

 

シェルで二重起動防止

以下では、cronから実行すると常に二重起動と判定されてしまう。

OLDEST=$(pgrep -fo $0)
if [ $$ != $OLDEST ]; then
    echo "[ERROR] 二重起動を検知したため、$0 の実行を中止します。"
    exit
fi

そのため、以下のようにする。

OLDEST=$(pgrep -fo $0)
if [ $$ != $OLDEST ] && [ $PPID != $OLDEST ]; then
    echo "[ERROR] 二重起動を検知したため、$0 の実行を中止します。"
    exit
fi

理由は以下を参照。

障害メモ/cronからキックすると多重起動判定ミスする - ポケットがチケットでいっぱい