読者です 読者をやめる 読者になる 読者になる

Septeni Engineer's Blog

セプテーニエンジニアが綴る技術ブログ

デブサミ2016(1日目)に行ってきました

f:id:t_koshi:20160223011121p:plain こんにちは、越です。

すこし遅れましたが、2/18にDevelopers Summitへ行ってきたので、聞いてきたセッションのメモをブログへ記載させていただきます。

エンジニアなら使える深層学習 〜TensorFlowやDataRobotで機械学習がもっと身近に〜

シバタアキラ [DataRobot, Inc] @madyagi

DataRobot

機械学習を使った予測モデルを誰でも簡単に生成し、リアルな問題解決に活かすことができるプラットフォーム。

機械学習とは

コンピュータアルゴリズムにパターンを学習させ、予測や識別などの問題を解かせること

機械学習の種類

  • 教師あり学習
  • 教師なし学習
  • 強化学習

機械学習への入力データと解ける問題

分類
  • 2値分類: True/False
  • 多値分類: カテゴリー
回帰
  • 連続値: 数値
時系列
  • 数値x時間
レコメンデーション
  • 数値xアイテム
クラスタリング

すでに広くのビジネスに応用されている

金融
  • 与信
  • 保険
  • 事故に合う確率
マーケティング
  • クリック率
  • キャンペーン効果
人事・採用
  • マッチング
  • 辞めそうか?
スポーツ
  • 打率
ヘルスケア
  • 再入院率

Tensorflow

深層学習の構築に必要な線形代数を表現し、GPUなどの分散処理技術を使って高速に計算するためのライブラリ

デモ

  1. pipでtensorflowをインストール https://www.tensorflow.org/versions/r0.7/get_started/os_setup.html#pip-installation
  2. Giant Pandaの画像を識別 https://www.tensorflow.org/versions/r0.7/tutorials/image_recognition/index.html#usage-with-python-api

学習済みであるものしか識別できない

乗り遅れるな!KafkaとSparkを組み合わせたリアルタイム分析基盤の構築

田中 裕一 [日本アイ・ビー・エム]

ターゲット

  • これからビックデータを作り、集めたい方
  • Sparkを始めたい、ビックデータを始めたいエンジニア
  • ビックデータをやることになったけど、なにから始めたら良いかわからない方

持ち帰りポイント

  • Spark + Kafkaを使った解析基盤の概要の把握
  • ビジネス担当の方には「こんなことができるんじゃないか」という発想の種

Hadoop/Sparkの広がりについて

  1. イノベータ
  2. アーリーアドプタ
  3. アーリーマジョリティ←いまここ
  4. レイトマジョリティ
  5. ラガード

毎日発生しているデータ

  • ウェブサイトデータ
  • センサーデータ
  • カスタマーデータ
  • ログデータ
  • オフィスデータ
  • ソーシャルデータ
  • オペレーションデータ
  • メディアデータ

従来のHadoop基盤のおさらいと問題提起

  • inputのタイミング(複数ファイル間に渡るデータを処理する場合)
  • どうやって処理時間(レイテンシー)を下げるかの問題
  • アウトプットの問題

リアルタイム解析基盤について

リアルタイム解析基盤ではキューが重要

Kafkaがデータハブ
  • Inputの世界
  • OutPutの世界
  • BigDataの世界

Kafkaを用いて、キューによる処理系の分離をすることで、冗長化を実現

大量のデータ ↓ (どんなデータも一旦)Kafkaへ保存 ↓ データに合わせた処理

リアルタイム解析基盤の活用

RAW data(Kafka) ↓ Sparkで処理 ↓ 結果(Kafka) → APIRDB

まとめ

  • Sparkは利用事例や活用事例がこれからなサービス
  • 多様な業種で必要とされるビッグデータ処理を包括的にインタラクティブに扱うことができる
  • 設計にあたってキューを使っておくとアーキテクチャ全体の耐障害性・可用性が担保しやすい

マイクロサービス時代の大規模動画配信基盤 〜 Ruby × Go = ∞

小嶋 聡史 [DMM.comラボ]/江藤 慎吾 [DMM.comラボ]

DMMの動画配信サービスアーキテクトや開発フローについて

マイクロサービスとは

独立した軽量なシステムをシンプルに連携し構成したアーキテクチャ 連携=主にHTTPのRestfulな通信を想定

動画配信基盤

インターネットを介して動画コンテンツを配信するサービス 動画配信は大きく2種類に分類 - VOD 録画されてる動画を配信 - LOD ライブに動画を配信

システムの切り出し

  • 論理的な独立性を考慮する
  • 物理的な独立性を考慮する

ソースコードの変更が最小限になるように設計した

必要なものをプラグインから選択できるようにした

Pub/Subメッセージングモデル

設定変更の電番で使用

技術選定

技術選定で大事にしたこと

  • エンジニアに習得できるか?
  • エンジニアが成長できるか?
  • エンジニアが確保できるか?

評価軸

  • 学習コスト
  • 環境適応
  • 機能
  • 拡張性
  • 将来性
  • 学習コスト
  • 信頼性
  • レスポンス速度

Rubyと比較した時のGoの評価

メリット
  • 実行速度が早い
  • 環境構築が楽
  • バージョン依存の問題が少ない
  • バグになりそうな(warningなどの)コードは除外される
  • アセンブリコンパイルすることができる
デメリット
  • JSONなどの動的データの扱いは不向き
  • 戻り値によるエラーチェックが必須で冗長になりがち
  • ライブラリやノウハウが少ない
  • デバッガやロガー周りが充実していない

最終的なGo言語の決定要素

  • ハイパフォーマンスである
  • システムコールまで追える
  • 実用環境での十分な採用実績
  • 学習が容易で保守しやすい
  • ノウハウが資産になる
  • 今後もビジネスニーズがある