投稿

12月 3, 2018の投稿を表示しています

re:Invent2018 展⽰ブース「Expo」の様⼦とノベルティ #reinvent

イメージ
re:Invent2018 展⽰ブース「Expo」の様⼦とノベルティ #reinvent : この記事ではre:Invent会場のうち、AWSのパートナーなど、さまざまな企業が出展していた展⽰ブース「Expo」の様⼦をご紹介します。ノベルティコレクションもあるよ! まずは展示ブースの全体像をご紹介 すべてのブース […]

[Boto3 Adv-Cal DAY3]Lightsailインスタンスを対話式で作成するロジックに挑戦してみた

[Boto3 Adv-Cal DAY3]Lightsailインスタンスを対話式で作成するロジックに挑戦してみた : boto3 で楽しむ AWS PythonLife 一人AdventCalendarです。 boto3のドキュメントを通して、サービス別にどういった事が出来るのかを理解したり、管理コンソールを通さずにTerminalだけ […]

[レポート] API325 : Amazon SageMakerとAWS Step Functionsによる機械学習のワークフロー #reinvent

イメージ
[レポート] API325 : Amazon SageMakerとAWS Step Functionsによる機械学習のワークフロー #reinvent : AWS re:Invent 2018 API325 - ML Workflows with Amazon SageMaker and AWS Step Functionsのセッションレポートです。 以下、公式の概要です。 […]

[レポート]AIM202-L: Leadership Session: Machine Learning #reinvent

イメージ
[レポート]AIM202-L: Leadership Session: Machine Learning #reinvent : こんにちは、小澤です。 本記事は現地時間2018/11/26-30で行われているre:Invent 2018のセッション「Leadership Session: Machine Learning」のレポートとなります。 […]

offsetのメモ

offsetのメモ : offset()に関してのメモ 実装上でちょっとハマったのでメモがわりとして 実装 特定のページで固定フッターCTAを設置 エラー 目的のページ以外で Uncaught TypeError: Cannot read property 'top' of undefined と表示させる 解決 (function () { $(window).scroll( function(){ var $target = $('.target') //ここで判定 if ($target.length) { var $ele = $('.cta'); var $pos = $('.box').offset().top; var $win = $(window).scrollTop(); if( $win > $pos ){ $($ele).fadeIn(1000) }else{ $($ele).fadeOut(1000) } } }); })(); まとめ offsetでごにょるときは、すごい人ならもっとスッキリ描くのでしょうが、一旦メモとして記録

GoogleMapsのタイルレイヤーの作り方

イメージ
GoogleMapsのタイルレイヤーの作り方 : はじめに この記事は LIFULL Advent Calender2018  の3日目の記事です。 LIFULL HOME'Sの 地図検索 で採用しているタイルレイヤーについての紹介です。 タイルレイヤーとは Google Maps APIは球体の地球をメルカトル図法を使って256x256の平面に書き起こし、それをズームレベル0の時の地図表現にしています。 ズームレベルが1あがるごとにx,y方向の距離が2倍になっていき、地球全体を表現するために配置される256x256の画像の枚数も増えてタイルのように配置されていきます Google Mapsは詳細ズームレベルの時に全地理情報をブラウザに送るのは無理なので現在の表示領域にふくまれるであろう地理タイルを計算して、必要な分だけを画像としてブラウザに送りつけてレイヤーに敷き詰めることで地図を表現しています。 LIFULL HOME'Sの地図検索において LIFULL HOME'Sの地図検索はGoogle Maps API V3を用いて作られています。 もともと画面領域全体を検索範囲として結果を地図上に表示していました しかしながらこの画面領域全体を検索する実装は以下の問題を抱えていました。 画面領域がでかくなればなるほど検索範囲も大きくなり、1回の検索負荷が大きくなる 検索エンジンは複数台いるのに大きな負荷の検索を分割できない 地図を少し動かすだけでまた画面領域分の検索が走る 99%同じ領域でも再検索してしまう 毎回検索座標が違うの検索結果をキャッシュしてもヒット率が望めない そのため、Googleと同じようにタイルレイヤーを作り、検索をタイルごとに行う実装にし、一つ一つの検索の負荷を下げるように変えました。 一回の表示で複数の検索クエリが発生しますが、一つ一つは小さくバックエンドの検索エンジンも複数台でさばくので体感としてはだいぶ高速に表示することができるようになりました。(タイルの座標は常に一定なのでキャッシュ効率も高まりました) また、タイルの中にcanvasを配置し、それぞれの物件マーカーを絵として描画することで、DOMの総量を減らしてモタついた印象をなるべく排除す...

re:Invent 2018 私的HPCまとめ

re:Invent 2018 私的HPCまとめ : AWS re:Invent 2018に参加してきました。昨年に引き続きスピーカーとして参加してきました。今年も他の誰もやらないであろうHPC的なまとめを私なりにしてみます。 AWS re:Inventについて 一般的な説明は他のまとめに任せます。2018年は5万人とか6万人とか7万人とかってシャトルバスのおばさんに聞きました。ラスベガスの巨大なホテルを何箇所も使って、すげースケールです。 https://reinvent.awsevents.com/ 所感 なんかHPC関連増えてませんか? 簡単に使えるAWS Batchが普及してきた影響でしょうか。機械学習、深層学習、AI系も増えていますがHPCも増えた感じがあります。 新しいインスタンスタイプはいつでもWelcomeですね。p3dn.24xlargeでメモリが倍に増えて、Deep Learningでエポック数が増やせて嬉しい人は多いですよね。 EFAという新しいネットワークアダプターでMPIのスケールがこれでグッと伸びるはずです、うれしい。 Lustreの追加。個人的にはこれが一番うれしい。 昨年のNitroにつづきEFA, Inference Chip, A1インスタンス。ありとあらゆるところでSoC, Chip関連の進化が見えています。2015年に買収したAnnapuruna Labの効果が出ているのだと思います。また半導体製造大手のTSMCからCloudをChip Designに使っていくアナウンスがあったり、Purpose-build chipの需要性があがり、計算リソースへの要求が増えて、クラウドへの移行が進むという綺麗な流れが見えます。EDA on CloudでPurpose-build chipの開発を加速することが、Computing多様化時代へのひとつの大きなステップになるような気がしています。 TSMCのアナウンス: http://www.tsmc.com/tsmcdotcom/PRListingNewsAction.do?action=detail&newsid=THGOANTHTH&language=E HPC関連リリース FSx for Lustre: 待っていたよ!君のことを! htt...

Nuxt.jsで自分に外部APIを立てるのにexpressなどは必要がない

Nuxt.jsで自分に外部APIを立てるのにexpressなどは必要がない : 言語化が不得手なのでタイトルで正しく言い表せていないです。 Nuxt.jsを使っていても、サーバーにaxiosなどでPOSTして処理して結果を受け付けたいことってありますよね? 例えば http://localhost:3000/index から http://localhost:3000/api にPOSTしてレスポンスを受け取る。です。 「Nuxtが稼働しているサーバーでAPIサーバー?としても処理させる」 ことがしたいのです。 事前調査 nuxt axios api などで検索 Nuxtのチュートリアル的記事ではaxiosを使うものまではいくつか見つけられるものの、その多くは外部のテストデータ用のAPIだったりで、 「自分自身にAPIリクエストを投げる」 ものが見つけにくいなと思いました。 たとえば 5分で分かる! Nuxt.js + axiosでAPIを使ってみる。 | ネクストページブログ npm install --save axios インストールが完了したら、簡単なサンプルを作成して動きを見てみましょう。 APIは下記サイトからデータを取得してみます。 http://zipcloud.ibsnet.co.jp/api/search?zipcode=1040032&callback=jsonData のような。 他にも私は過去に Nuxt.js 入門 #1 – Nuxt.js によるブログアプリ制作 – chatbox blog で少し勉強しましたが、こちらも axios による APIデータの取得処理 最後に実際に API 通信を行って記事のデータを取得してみましょう。 今回は、JSON Placeholder というサイトで公開されている POST API を使用します。 http://jsonplaceholder.typicode.com/posts と外部データを使うので、今回困ったように知見が溜まってなかったのですね。 見つけたけど使わなかった2つの方法 自サーバーでAPIを使う方法をなんとか調べた結果、2つ方法がありそうでした。 どちらもexpressを使う点は同じですが、 「ex...

Web職人のためのPHPフレームワーク「Laravel」をマスターしよう!~HelloWorldを表示させる

Web職人のためのPHPフレームワーク「Laravel」をマスターしよう!~HelloWorldを表示させる : 本連載ではPHPフレームワークのひとつであるLaravelを紹介していきます。Laravelは、「Web職人のためのフレームワーク」というキャッチコピーのもと、ここ数年で人気がうなぎ上りのフレームワークです。連載を通して、その人気の秘密を味わっていただこうと思います。  その第1回である今回は、Laravelとは何かを紹介するとともに、Laravelを使ってブラウザに「Hello World!」と表示させるところまで解説します。

Nuxt.jsでSassの変数を使えるようにして全ページで読み込むようにする

Nuxt.jsでSassの変数を使えるようにして全ページで読み込むようにする : やりたいこと Nuxt.jsの環境でSassを使いたい CSSフレームワーク(Bulma)を導入したい 設定した変数をvueファイルで使いたい 共通スタイルcommon.cssみたいなファイルを全ページで読み込みたい 使うもの Bulma node-sass sass-loader nuxt-sass-resources-loader 作業内容 ターミナルでインストール $ npm install sass-loader node-sass --save-dev $ npm install bulma --save $ npm install --save-dev nuxt-sass-resources-loader Sassファイルを作成する 変数を設定するファイル /assets/sass/variable.scss // Import a Google Font @import url('https://fonts.googleapis.com/css?family=Nunito:400,700'); // Set your brand colors $purple: #8A4D76; $pink: #FA7C91; $brown: #757763; $beige-light: #D0D1CD; $beige-lighter: #EFF0EB; // Update Bulma's global variables $family-sans-serif: "Nunito", sans-serif; $grey-dark: $brown; $grey-light: $beige-light; $primary: $purple; $link: $pink; // Update some of Bulma's component variables $control-border-width: 2px; $input-background-color: $beige-lighter; $input-border-color: transpare...

JSフレームワークのサーバーサイド接続まとめ

JSフレームワークのサーバーサイド接続まとめ : 昨今話題の3大JavaScriptフレームワーク Vue.js React Angular について各入門書をそれぞれ読んでみて余りにもサーバーサイド(バックエンド)との接続に関する情報が乏しかったので自分なりに調べたまとめ (本番環境ではビルドして配置してね程度しか書いてない事が多い(特にAngular)…といいつつwebpack-dev-serverの設定でproxyできるのを知ったのはmio先生の「基礎から学ぶ Vue.js」がきっかけだったり) 以下各バックエンドサイドのポートが9000番と仮定して /apiにサーバーサイドスクリプトを配置していると想定した場合 Vue.jsの場合 Vue CLIで $ vue init webpack sample-app としてプロジェクトを生成した場合 [プロジェクトルートディレクトリ]/config/index.js にて index.js /* 抜粋 */ proxyTable: {}, ↓ proxyTable: { "/api":"http://localhost:9000" }, としてやって $ npm start するだけでOK Angularの場合 Angular CLIにて $ ng new sample-app としてプロジェクトを生成した場合 プロジェクトルートディレクトリにproxy.jsonを以下の内容で作り proxy.json { "/api": { "target": "http://localhost:9000" } } package.jsonのスクリプト欄を以下のように書き換える package.json /* 抜粋 */ "scripts": { "start": "ng serve", }, ↓ "scripts": { "start": "ng serve --proxy-config prox...

INEVITABLE ja night 開催レポート - 日本の情シスを巡る不可避な流れとは -

イメージ
INEVITABLE ja night 開催レポート - 日本の情シスを巡る不可避な流れとは - : ※イベントのご案内 INEVITABLE ja night - “インターネットの次にくるもの”                   第 7 回 コネクティッド社会に向けた不可避な流れ 日 程 : 2018 年 12 月 14 日(金) 19:00 〜 21:00(開場 18:30 より) スピーカー: 玉川 憲 氏(株式会社ソラコム 代表取締役社長) 饗庭 秀一郎 氏(JapanTaxi 株式会社 データエンジニア) 登 不二雄 氏(インフォメティス株式会社 Co-founder ネットワーク技術主幹)他 申し込み: お申し込みサイト Google Cloud に代表されるクラウド技術の進化が引き起こすその先の世界を、機械学習、VR / AR、IoT などの領域で活躍されている方々と一緒に議論するイベント「 INEVITABLE ja night 」。 9 月 18 日に開催した第 6 回目のイベントは、「日本の情シスを巡る不可避な流れ」をテーマに、現役の CIO や情シスでの業務経験のある方々をお招きして、日本企業における情報システム部門は今後どのような役割を果たすべきか、どのように進化すべきか、さらには、情シス的な人材が今後どのように活躍できるのかについて、議論しました。 現役 CIO が語る情シスの現状と未来 前半のテーマは「現役 CIO に聞く。情シスと CIO の役割を巡る不可避な流れ」ということで、以下の3名の方に登壇いただきました。 友岡 賢二さん(フジテック株式会社 常務執行役 情報システム部長) 成田 敏博さん(株式会社ディー・エヌ・エー 経営企画本部 IT 戦略部部長) 金山 裕樹さん(株式会社スタートトゥデイテクノロジーズ 代表取締役 CINO(Chief Innovation Officer)) (左から、友岡さん、成田さん、金山さん。聞き手は小島 英揮さん(Still Day One 合同会社 代表社員 パラレルマーケター・エバンジェリスト)) 「クラウドとモバイルを組み合わせることがまずは重要だが、日本の製造業の多...

Amazon SageMaker で、セマンティックセグメンテーションアルゴリズムが利用可能になりました

イメージ
Amazon SageMaker で、セマンティックセグメンテーションアルゴリズムが利用可能になりました :  Amazon SageMaker は、マネージド型で、無限に拡張可能な機械学習 (ML) プラットフォームです。このプラットフォームを使用すると、機械学習モデルの構築、トレーニング、デプロイが簡単になります。Amazon SageMaker には、 画像分類 と 物体検出 のための 2 つの定評があるコンピュータビジョンアルゴリズムがすでに組み込まれています。Amazon SageMaker の画像分類アルゴリズムは、画像をあらかじめ定義されたカテゴリのセットに分類することを学習します。Amazon SageMaker の物体検出アルゴリズムは、境界ボックスを描画し、ボックス内の物体を識別することを学習します。本日、Amazon SageMaker セマンティックセグメンテーションアルゴリズムの開始により、コンピュータビジョンファミリーのアルゴリズムを強化することを発表いたします。 Amazon SageMaker セマンティックセグメンテーションアルゴリズムの一例。 PEXELS の Pixabay による写真。 セマンティックセグメンテーション  (SS) とは、既知のラベルセットからのクラスを使用して画像内のすべてのピクセルを分類するタスクです。セグメンテーション出力は通常、異なる RGB (クラス数が 255 未満の場合はグレースケール) の値として表現されます。したがって、出力は、入力画像と同じ形状のマトリックス (またはグレースケール画像) です。この出力画像は、セグメンテーションマスクとも呼ばれます。Amazon SageMaker セマンティックセグメンテーションアルゴリズムを使用すると、独自のデータセットでモデルをトレーニングできることに加えて、事前にトレーニングされたモデルを使用して希望通りに初期化を行うこともできます。このアルゴリズムは、MXNet Gluon フレームワークと  Gluon CV ツールキット を使用して構築されています。セマンティックセグメンテーションモデルを学習することができる、次の 3 つの最先端の組み込みアルゴリズムの選択肢を提供します。 fully-convolut...

Amazon SageMaker ノートブックが Git 統合への対応開始により、持続性、コラボレーション、再現性を強化

イメージ
Amazon SageMaker ノートブックが Git 統合への対応開始により、持続性、コラボレーション、再現性を強化 : Amazon SageMaker ノートブックインスタンスと GitHub 、 AWS CodeCommit 、あらゆるセルフホスティング型 Git リポジトリとの関連付けが可能になり、 Jupyter ノートブックでの簡単で安全なコラボレーションや確実なバージョンコントロールが実現できるようになりました。本ブログ記事では、Git ベースのバージョンコントロールシステムを使用することのメリット、および Git リポジトリで作業するためのノートブックインスタンスの設定方法について詳しく説明します。 データサイエンス分野のプロジェクトでは、コラボレーションが不可欠です。データサイエンティスト、機械学習の開発者、データエンジニア、アナリスト、ビジネスの意思決定権限者は、機械学習モデルのコンセプト作りから製品化にいたる合理的な行程を維持するために、インサイトの共有、タスクの委託、業務履歴のレビューが必要です。 Git ベースのバージョンコントロールシステムは、共有可能な環境でデータサイエンス活動を一元管理します。Git リポジトリと合わせて Jupyter ノートブックを使用することで、プロジェクトの共同起草、コード変更のトラッキング、リリース可能なコード管理を実現するソフトウェアエンジニアリングとデータサイエンス活動の融合が可能になります。 また、ノートブックインスタンス内のノートブックは、耐久性の高い Amazon Elastic Block Store (EBS) ボリュームに格納されます。ただし、ノートブック自体がノートブックインスタンスの寿命以上に存続することはありません。つまり、ノートブックインスタンスを削除すると、作業自体も削除されます。Git リポジトリ内にノートブックを格納すると、Jupyter ノートブックをインスタンスのライフサイクルから分離し、将来の参照や再利用に備えてスタンドアロンドキュメントとして保持できます。 さらに、機械学習および深層学習テクニックに関して一般に公開されているコンテンツの多数が、GitHub のような Git リポジトリ内にホスティングされた Jupyter ノートブック上で入手で...

Amazon SageMaker に機械学習実験を加速する新機能が登場

イメージ
Amazon SageMaker に機械学習実験を加速する新機能が登場 : データサイエンティストおよび開発者は、 Amazon SageMaker Search で機械学習 (ML) モデルトレーニングの実験を、素早く簡単に整理、追跡、評価できるようになりました。当社が導入する新しい Amazon SageMaker Search 機能を使用すると、Amazon SageMaker の数百から数千に及ぶモデルトレーニングジョブの中から、最も関連性の高いモデルトレーニング実行を発見して評価することができます。これにより、モデルの開発と実験のフェーズをスピードアップし、データサイエンティストと開発者の生産性を高め、機械学習ベースのソリューションを市場に投入するまでの全体的な時間を短縮できます。AWS マネジメントコンソールと AWS SDK API for Amazon SageMaker の両方で、新しい検索機能のベータ版を利用できます。新機能のベータ版は、 現在 Amazon SageMaker の利用が可能な 13 の AWS リージョンで、追加料金なしで提供されています。 機械学習モデルを開発するには、継続的な実験と観察が必要です。たとえば、新しい学習アルゴリズムを試したり、モデルのハイパーパラメータをチューニングしたりする場合、そのような増分変更がモデルのパフォーマンスと精度に及ぼす影響を観察する必要があります。この反復型最適化の訓練は、数百のモデルトレーニング実験とモデルバージョンでデータ爆発を招くことがよくあります。それにより、「成功した」モデルの収束と発見が遅くなる可能性があります。また、情報の爆発が起こると、本番環境にデプロイされたモデルバージョンの先行モデルを遡って追跡するのにも手間がかかります。このようなモデル系統の追跡の難しさは、モデルの監査やコンプライアンスの検証、モデルのライブ予測パフォーマンスの低下原因のデバッグ、新しいモデルの再トレーニング実験の設定などを行う妨げとなります。 Amazon SageMaker Search を使用すれば、ビジネスユースケースに対応するうえで最も関連性の高いモデルトレーニング実行を迅速に特定できます。採用された学習アルゴリズム、ハイパーパラメータ設定、使用されているトレーニングデータセット、さ...

AthenaのCTAS(CREATE TABLE AS SELECT)でETLをするTips

AthenaのCTAS(CREATE TABLE AS SELECT)でETLをするTips : はじめに この記事は AWS Advent Calendar 2018 の3日目の記事です。 今年の10月にAthenaがCTAS( CREATE TABLE AS SELECT )をサポートしました。 CTASサポート以前のAthenaではクエリの結果を無圧縮のCSVでしか残せなかったのですが、CTASを使うと結果を列指向やJSONなどのフォーマットにしたうえ圧縮をかけて残せるようになりました。 これによりAthenaを使ったデータ加工の芽が出たのでいくつかのデータ加工バッチをAthenaでできるか検討しました。 この記事ではAthenaのCTASを使ったバッチを作る際のTipsについて紹介します。 前提 AthenaでETLしたい理由 AthenaはETL無しでS3のデータに直接分析をかけれるよ、というコンセプトを謳っており、現状ETLをするために設計されたサービスな訳ではないように感じています。しかし、それでもAthenaでETLしたい(出来たら嬉しい)理由は以下のような感じです。 使うのがめっちゃ楽なフルマネージドサービス Presto早い Prestoの関数に便利な機能多い スキャンしたデータ量に応じた課金なので小規模から始めやすいし、安く使える S3のファイルを直接加工するための選択肢として手頃 CTASの使い方 結果を残したいクエリの先頭に CREATE TABLE table_name WITH ( property_name = expression ) AS をつけるだけです。 例えば以下のようなクエリを実行すれば example データベースに sample_data テーブルが作成されます。 そしてその実データは s3://output-bucket/ の配下に PARQUET 形式で保存されます。 CREATE TABLE example.sample_data WITH ( format='PARQUET', external_location='s3://output-bucket/' ) AS SELECT * FROM ( ...