New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🚀 AWS re:Invent 2017(参加記) #2

Closed
sh19910711 opened this Issue Sep 1, 2014 · 0 comments

Comments

Projects
None yet
1 participant
@sh19910711
Owner

sh19910711 commented Sep 1, 2014

このissueはmixiグループ Advent Calendar 2017(6日目)の記事です。 :octocat:


🚀 ラスベガス出張

vim

XFLAG (B.B.Q.)でVRE; Vim Reliability Engineeringをやっている新卒です。

先週、11月27日から12月1日に掛けてラスベガスで開催された re:Invent 2017 に出張で現地参加させて頂きました。re:InventはAWSが主催する最大級のLearning Conferenceです。参加者はセッションに参加したりレクリエーションで遊んだり世界中から集まった他の参加者たちと交流したりしながら一週間を過ごします。

この出張、正直不安で一杯だったりしました。アメリカに行くのは初めてだし英語がどこまで通じるのかわからないし入国審査に引っかかったり強制送還されたり不手際で出張予算を台無しにしてしまうのではないかとひたすらにプレッシャーがあってここ何ヶ月か危機感を覚える程度に飲酒量が酷いことになっていました。

なんとか無事に行って帰ってこれたので安心しましたが、しばらくお酒を控えたいと思います。 🙅

🇺🇸 [ ラスベガス 位置 ] [ 🔍 検索 ]

西側です。砂漠の中にあります。

🌱 規模感がある

今年は5つのホテルと1つの駐車場を使って1000を超えるセッションが提供されました。

campus

受付です。

img_0345

Venetianのゲートです。

img_0335


🌱 THE NON-PROFIT HACKATHON

https://reinvent.awsevents.com/learn/hackathon/

re:Inventには講演以外にもハッカソンやJAMなどのセッションがあったりします。re:Inventのセッションは予約が必要で時間が一部でも重なっているセッションは同時に予約ができないので、ハッカソンなどの長時間行われるセッションを予約すると講演系を予約するのが難しくなります。その代わりに多くの人と交流できたり美味しいご飯が出たりするのでオススメです。 👍

初日はTHE NON-PROFIT HACKATHONに参加しました。朝の8時から夜の9時まで開発に取り組み、そのあと日付が変わるまでプレゼンや審査が行われる割とハードなスケジュールです。いくつかのNPOがお題を出していて参加者はNPOごとに4-5名程度のチームに振り分けられて与えられたお題を解決できるようなシステムを組み立てます。

看板

今回は4つのNPOが参加していて、そのうちのTHORNという組織が出しているお題に取り組むことになりました。THORNは技術を使ってインターネット上の児童ポルノなどから子供たちを守ることを目指しているようです。

チームメイト: David, Jatin, Simon

Team 9

与えられた開発テーマは以下のような感じでした。

  • AWS Plugin
    • s3のハッシュから不適切なコンテンツを検出できるようなプラグイン
  • Scaling Hash Matching
    • 膨大なハッシュのマッチングをうまいこと分散してやれるようなアルゴリズム
  • Transcribe Audio from Video
    • 膨大にある動画から音声を書き起こして効率的にレビューできるようなツール
  • Hash Clustering
  • Content Review Tool
  • Test API Service

自分のチームは動画から音声を書き起こせるようなサービスを作ることにしました。

🎥 Lambda + S3 + Elastic Transcoder で動画から音声を抽出してみた

最初に動画ファイルから音声ファイルを抽出する部分を担当することになりました。AmazonのElastic Transcoderというffmpegみたいなサービスがあったのでそれを使用する方針で実装を行いました。

https://aws.amazon.com/jp/elastictranscoder/
Amazon Elastic Transcoder はクラウドのメディア変換サービスです。高度なスケーラビリティ、使いやすさ、高い費用効率性を実現する設計で、開発者や企業は、メディアファイルをその元のソース形式からスマートフォン、タブレット、PC などのデバイスで再生可能できるバージョンに変換(または「トランスコード」)できます。

流れとしてはS3に動画ファイルがアップロードされると、Lambda関数が実行されて、Elastic Transcoder経由で音声ファイルを自動抽出してS3に格納するようなものになります。

Transcoder側ではパイプラインというものを作成してどこからどういう形式のファイルを受け取るか設定します。そしたらば次はLambda側でどこにどういう形式でファイルを出力するか設定してTranscoderのジョブを作成してやると期待通りの動作をしました。

設定:

var params = {
Input: {
Key: key
},
PipelineId: '1511814545326-jwbyte',
OutputKeyPrefix: 'audios/',
Outputs: [
{
Key: getFileName(key) + ".mp3",
PresetId: '1351620000001-300010' // Audio MP3 - 320 k
}
]
};

ジョブの作成:

elastictranscoder.createJob(params, function(err, data) {
if (err){
console.log(err, err.stack); // an error occurred
context.fail();
return;
}
context.succeed();
});

Lambda関数の実行ロールにS3とElastic Transcoderの権限が必要なので注意しましょう。 👀

🔈 Keyword Seekable な Video Player をつくってみた

チームの方が Google Cloud Speech API を使って(AWSのサービスではうまいこと完結できなかったらしい)音声ファイルからTranscript(字幕)を生成できる仕組みをつくってくれたので動画から音声ファイルを抽出してそこから字幕を生成できるようになりました。これを使って指定のキーワードを含むようなシーンに飛べるような動画プレイヤーを作ってみることにしました。

keyword seekable video player

残念ながら動画プレイヤーのモックが動作するようになったあたりで時間切れになってしまい入賞することはできませんでしたが、初めてのハッカソンを知らない異国の人たちと共に取り組むことができたのは良い刺激になったし良い思い出になりました。

以下、ハッカソンの様子です。


🌱 Gameday

二日目はGamedayに参加しました。

Test your skills as you work to efficiently scale and deploy an application that meet the demands of the connected world and still conquer threats from both inside and outside of your company. Can you keep a cloud-based workload running through extreme traffic spikes and malicious attacks, with little input from the people who built it the first time? Can you support and evolve this application over time to achieve the most efficient architecture? Still building your AWS skills? Sign up and take the challenge to learn tips and tricks from AWS resources and your teammates.
https://reinvent.awsevents.com/learn/gameday/

Unicorn Rentalsというスタートアップの社員になったつもりで、与えられたアプリケーションを安定稼働させてそのパフォーマンスを改善していくISUCONのようなタスクに取り組んだり、S3に上げられたちょっとしたデータセットを元に集計を行うタスクに取り組んだり、CTFっぽい暗号解読タスクに取り組んだりと、幅広い知識や技術が要求されるコンテストでした。

LINQというホテルの駐車場にテントが立っていてその中でやっています。

朝飯です。

チームメイト: Ken, Sten, Matt

S3でウェブサイトの静的ホスティングをやったあとは、Athenaで集計をやったりして終わりました。


🌱 Analytics JAM

三日目に参加した Analytics JAM は機械学習・IoT・ビッグデータに関する問題をAWSの各種サービスを使って解決するもので、参加するまでは個人で黙々と演習に取り組むようなものを想像していましたが、実際にはチームで協力しながら取り組むコンテスト形式のハンズオンで良い感じでした。

チームメイト: Andy, Jonson?, George

🆒 dashboardが作り込まれていました

🔎 Amazon Rekognition

最初に手をつけた問題は、たくさんある写真から動物を検出して種類ごとにカウントするような問題でした。Amazon Rekognitionを使うように書いてあったので使ってみました。

📝 Amazon Rekognition

コレクションを作成して:

test/p2.bash

Lines 1 to 4 in 6654b6c

create_collection() {
aws rekognition --region us-east-1 create-collection --collection-id animals
aws rekognition --region us-east-1 list-collections
}

インデックスに追加すると、類似の画像を検索したりできます(この問題では不要だった気がする):

test/p2.bash

Lines 6 to 13 in 6654b6c

index_faces() {
for obj in $(aws s3 ls s3://analyticsjam/AI02/ | awk '{print $4}'); do
aws rekognition --region us-east-1 index-faces \
--image '{"S3Object":{"Bucket":"analyticsjam","Name":"AI02/'$obj'"}}' \
--collection-id animals \
--external-image-id $obj
done
}

RekognitionにS3経由で画像を投げると関連するラベルが返ってきたりします:

test/p2.bash

Lines 21 to 35 in 6654b6c

def detect_labels(key):
rekognition = boto3.client("rekognition", "us-east-1")
response = rekognition.detect_labels(
Image={
"S3Object": {
"Bucket": "analyticsjam",
"Name": key,
}
},
MaxLabels=10,
MinConfidence=90
)
var_dump(response['Labels'])
return [l['Name'] for l in response['Labels']]

写っている動物の種類が返ってくるのでそれを数えてやれば、どの動物が一番多く写っていたかを計算することができました。カウントするときはpythonのCounter を使うと良い感じになります。

>>> from collections import Counter
>>> c = Counter(['hello', 'world', 'hello'])
>>> c
Counter({'hello': 2, 'world': 1})
>>> d = Counter(['hello', 'new', 'world'])
>>> c + d 
Counter({'hello': 3, 'world': 2, 'new': 1})
>>> 

以下、様子です。

アメリカ、広すぎてスケール感が伝わってこないですが、観覧車は40人ぐらい乗っても大丈夫な奴らしいです。

🍻 Pub Crawl

三日目の夕方からPub Crawlというのが始まって、VenetianとMGMというホテルのパブが参加者に無料で開放されました。

一軒目、グラスが光っていました

img_1205

Venetian, 屋内に川が流れていました

img_1253

二軒目

img_1268
img_1289

Venetian周辺

img_1383

三軒目くらいでよくわからない感じになって、最後はDenny'sでハンバーガを食べていました。

img_1394

名刺交換するとXFLAGの B.B.Q. の意味を聞かれることが多かったです。ちなみにXFLAGではバーベキューのようにみんなでワイワイ楽しめる場を提供しています。


🌱 EBC Meeting

四日目はAll-in JAMというセッションに参加する予定でしたが、会場が変更になって間に合わなかったので参加できずでした。この日は出張の本筋であるAWSのエンジニアとのミーティングも控えていたので会場のAriaまで散歩したりして過ごしていました。

img_1428

何やらラスベガスでは巻き寿司 🍣 が市民権を得ているようでした 🤔

img_1457
img_1490

EBC Meetingは30分程度でしたが、普段使っているAWSのシステムを開発しているエンジニアから直接アドバイスを頂いたり開発ロードマップなどを聞くことができて今後の動き方を考える上で非常に有益な時間でした。

img_1548
img_1565
img_1774

🍻 re:Play Party

img_1839
img_1844
img_1883
img_1884
img_1934
img_1954
img_1969
img_1993
img_2015
img_2021
img_2124
img_2090
img_2143
img_2209


🌱 五日目

re:Invent, 最終日です。これまでの疲れがどっと来て疲弊していました _(:3 」∠ )_

img_2238

朝飯

img_2245

img_2257

データ分析関連のセッションに参加するためAriaに移動。

img_2337
img_2450
img_2480

💺 ABD336 - Building Serverless Analytics on AWS # Aria, Level 3, Starvine 9

  • S3 => Athena => QuickSight

💺 SRV402 - Big Data, Analytics and Machine Learning on AWS Lambda # Aria, Level 3, Juniper 4

  • Kinesis Firehose

img_2499
img_2501
img_2511
img_2544

CVSはアメリカのマツモトキヨシみたいな奴です。24時間空いていて便利。

img_2563

wendy's, grilled chickenがうまく発音できずという感じでした。

img_2571

✔️ 締

でっかいアメリカでこれまで見て来たどんなイベントよりも圧倒的に大きなスケールのイベントを現地で肌で体験することができたのは貴重な経験になりました。

@sh19910711 sh19910711 added this to the Hello #1 milestone Sep 1, 2014

@sh19910711 sh19910711 closed this Sep 1, 2014

@sh19910711 sh19910711 changed the title from test to 🍣 test May 4, 2015

@sh19910711 sh19910711 changed the title from 🍣 test to 🚀 AWS re:Invent 2017 参加記 Dec 5, 2017

@sh19910711 sh19910711 changed the title from 🚀 AWS re:Invent 2017 参加記 to 🚀 AWS re:Invent 2017(参加記) Dec 5, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment