MANABIYA1日目に行ってきた
3/23,24に開催されたMANABIYA(https://manabiya.tech/)の1日目に行き、
機械学習ハンズオンとインフラ系セッションに参加してきました。
普段はネイティブアプリのサーバーサイドエンジニアとして働いており、
業務で機械学習を活用したりインフラ領域に深く携わることはありませんが、
今後理解を深めていきたい分野のためせっかくの機会と思い参加しました。
Python + Keras + TensorFlowによるディープラーニング実践(入門)
AidemyのCEO石川氏によるハンズオン形式のセミナー
内容としてはAidemyの機械学習概論(https://aidemy.net/courses/2010)とディープラーニング基礎(https://aidemy.net/courses/5090)に基づいたもので、機械学習に関する解説と深層学習による手書き文字認識、画像認識についてKerasを用いてJupyter Notebook上で実際に動かすといったものでした。
解説がわかりやすくハンズオンでも実際に動かすイメージを持つことができて非常に良かったので、今後Aidemyの各コースも一通り受けてみようと思います。
本気で機械学習やる人のためのハンズオン ~教師データ作成から学習・性能評価まで~
www.slideshare.net
来栖川電算の方々によるハンズオン形式のセミナー
はじめに機械学習の概要と向き不向き、機械学習プロジェクトの進め方について解説がありました。
以下解説メモ
- 機械学習とは
- 人間の学習能力や推論能力を機械に模倣させる手法(自動プログラミングの一種)
プログラミングとの対比
- プログラミング:推論のプロセスを人間が考えて記述。実装仕様が明らか。
- 機械学習:具体的な実装仕様がわからなくても適用可能。ただし膨大なデータが必要
機械学習プロジェクトについて
機械学習プロジェクトの進め方
- 仮説検証の繰り返し
- AIエンジニアとデータ管理エンジニアが協力してルールを考案し、よりよいタスクへ再定義していく
- 精度評価においてもタスクに応じて見るべき指標が異なってくるため、タスクを確定させていきながら見るべき指標を絞っていく
ハンズオン資料 github.com
ハンズオンはAWS SageMakerを使ってJupyter Notebook上で花札の画像認識の実装を体験するというものでした。
AnnotationFactoryという来栖川電算のプロダクトを用いて作成された教師用花札画像データをSSD (Single Shot Multibox Detector) モデルで学習させる転移学習です。
AWS SageMakerについては日本リージョンではまだ利用不可であり活用事例は少なく費用面も高めなので実務想定の話ではありませんでしたが、Jupyter Notebookの含まれた機械学習を容易に試せる環境として選択したとのことでした。
マイクロサービスアーキテクチャとサーバレスからDevOpsへ
アマゾン ウェブ サービス ジャパン株式会社 プロダクトマーケティングエバンジェリストの亀田氏による講演
AWSの歴史の紹介と設計思想やインフラ技術、開発手法など幅広い解説がされていました。
以下講演メモ
AWSの由来
-
- 最初はモノリシックアーキテクチャ
- アンチパターン
- システムの大規模化によって遅延などの弊害が生じ始める
- SOA(Service Oriented Architecture)
- Two-pizza teams
- チーム内部は密結合になることもある
- この規則を超える人数のチームは作らない(コミュニケーションコストが肥大化することを防ぐ)
- DevOpsの概念
- 厳密にインターフェースを保つ
- 保つことができなければデグレが生じる
- チーム内部は密結合になることもある
- 数千のチーム × マイクロサービスアーキテクチャ × 継続的デリバリ × Infrastructure as a code = 年間5000万回のデプロイ
- Infrastructure as a codeの内部分解
- Dev側のインフラ管理コストを極小化
- DevOps
- 最初はモノリシックアーキテクチャ
AWSのサービスから見る変遷
- 初期
- Auto Scaling
- セッション情報共有Pool
- 最新アプリケーションデプロイ
- AMI再生成パターン
- 緊急時の対応などに対しては重い
- Bootstrapパターン
- OSの新規立ち上げの時間がかかる
- Loadingデプロイ
- 一台ずつ切り替えていく
- AMI再生成パターン
- コンテナ、サーバレス
- EKS,Fargate
- 初期
ソフトウェアの設計においてもインフラのリソース管理においても開発組織の形成においても、構成要素を必要最小限の粒度まで落とし込んでインターフェースを厳密に管理し疎結合にすることで効率とスケーラビリティが得られるということがよくわかった。
小さくすることはあくまで手段であり、解決したい課題が先にあってこそなので、その課題を正しく見出すことも大事だと思った。
その意味でもインフラ面について単に実装に必要なサービスを知るだけではなく、コスト面やリソースの最適な活用、あるいは継続的なデプロイのためのパイプラインをいかに整備するかということにも意識を向けて様々なプラクティスを知りたいと思った。
マイクロサービス on マルチクラウド
株式会社メルカリ SRE/プリンシパルエンジニア 長野氏による講演
メルカリのインフラの歴史やマイクロサービスとマルチクラウドの運用事例とマルチクラウドの課題についての紹介
以下講演メモ
メルカリのシステム概要
マルチクラウドの構成
インフラの歴史
IaaSを中心としたマルチクラウド
オペレーションの共通化・少人数運用の実現
シンプルな三層構成
- EC2/GCEを主に利用
internal DNS
- 全てのサーバにunboundを導入
- ローカルキャッシュによるパフォーマンス向上
- resolv.confより障害に強い
サービスの可溶性と柔軟性を確保
マイクロサービス
- サービスのレジリエンス向上
- 細かいスケーリングと障害の分離
- チーム、組織のスケーラビリティを高める
- 1000人以上のエンジニア組織を志向
- サービスの開発速度の向上
- サービスのレジリエンス向上
USリアーキテクチャ
-
- マイクロサービスを進めるため
Kubernetes
- AWS EKS, Fargateの検証
- k8s on Metalの検証
Spinnakerhttps://www.spinnaker.io/の採用
- デプロイパイプラインを定義、自動実行
マルチクラウドの課題
- 今後について
調べてみると以前からメルカリのマイクロサービス化が進められている話やマルチクラウドの話について、技術的にはchoconやSpinnakerを実用している話について発信していたみたいだが、自分にとっては初めての話で面白かった。
一つのクラウドサービス(自分はAWS)でどのようにサービスを構築するか、新しいサービスの使い道をどうするかということについ捉われがちになっていて、それでもちゃんとしたサービスを構築して開発運用できていれば問題ないのかもしれないが、よりサービスの質を高めるためにはいくつかの主要なクラウドサービスのpro/conを知った上で活用する手法を考えるべきだと感じた。