タグ

ブックマーク / www.yasuhisay.info (22)

  • 複数の企業でデータエンジニアとして求められたスキル - yasuhisa's blog

    最近「ああ、これ前職でも前々職でもやったことあるなぁ」という仕事があった。データエンジニア(やその関連職種)として働き始めて約5年、3社でフルタイムとして働いてきて「このスキルは業界や組織規模が変わってもデータエンジニアとしてスキルを求められることが多いな」と感じたものをまとめてみることにした。棚卸し的な意味はあるが、特に転職用などではないです。 前提 どこでも必要とされたスキル データマネジメントに関する概要レベルの知識と実行力 セキュリティや法令に関する知識 事業ドメインに関する興味関心 他職種とのコミュニケーション能力 コスト管理 / コスト削減のスキル ソフトウェアエンジニアとしてのスキル DataOpsやアラートのハンドリング能力 分析用のSQLを書く力 古いテーブルやデータパイプラインを置き換えていくスキルや胆力 あるとやりやすいスキル 関連部署の動きを何となく把握しておく力

    複数の企業でデータエンジニアとして求められたスキル - yasuhisa's blog
    sh19910711
    sh19910711 2024/04/29
    "走りながら勉強していく: 準備ができてからデータエンジニアをやろうとすると、範囲が膨大なためこれは現実的ではない / セキュリティや法令に関する知識 / 関連部署の動きを何となく把握しておく"
  • 実タスクで能動学習を試してみた - yasuhisa's blog

    実タスクで簡単な能動学習を試してみました。結論としては、1200件で到達できる精度に400件程度のアノテーションでも到達でき、それによりアノテーションに要する時間をかなり削減できそうということが分かりました*1。今後、アノテーションを必要とする機械学習タスクをやる際には能動学習で一手間かけるのを検討してみようと思います。 能動学習をする動機 ここしばらく仕事のタスクで機械学習の教師用のデータをアノテーションをする機会がありました。機械学習する上で、1000件程度は学習データ欲しいという想定でポチポチとアノテーションをしていました。一人1時間で大体100件くらいのデータが作れるようなタスクでしたが、1000件アノテーションするには約10時間の作業工程が必要です。アノテーション自体よりはコードを書いたり実験するのが好きな人間なので、5時間くらいずっとアノテーションしていると疲労します。同じ精度

    実タスクで能動学習を試してみた - yasuhisa's blog
    sh19910711
    sh19910711 2024/04/15
    "Uncertainly Sampling: アノテーションされていない全てのデータに対してスコアを付与 + スコアの絶対値が最小の事例に人手でアノテーション + アノテーションされたデータ全体を使って分類器を再学習" 2016
  • Clojureの思い出 - yasuhisa's blog

    ふと思い立ったので、記憶から忘却される前に書いてみようと思います。もう2年くらい書いてないけど、4年ほど仕事で使っていました。その期間はコード書くときはほとんどClojureだったので、まあまあヘビーに使っていたと思います。 前提 Clojureを使うようになったきっかけ ここがよかった、Clojure Immutableな世界 リスト系関数の充実 困ったときにはJavaに逃げられる マクロ Deployが容易 並列処理が容易 ClojureScript面白い ここが辛いよ、Clojure コード上で型が分からない パフォーマンスチューニング ちょっとしたcliアプリが書きにくい 再帰をよく使う 前提 メリット/デメリットはコンテキストによるだろうと思うので、どんな感じで使ってたかを書いておきます。 機械学習/自然言語処理の研究開発用途 最近だとPython一択になりつつありますが、数年前

    Clojureの思い出 - yasuhisa's blog
    sh19910711
    sh19910711 2023/08/12
    "もっと刺激が欲しいという気持ちが勝って、ClojureやHaskellが選択肢 / 修論前に現実逃避できるおもちゃが欲しかったのかも / immutableなデータ構造が前提なので、コードを書くときに考えればよいスコープがすごく狭く" / 2018
  • Terraform経由でBigQuery Editionsの設定を行なう - yasuhisa's blog

    背景: BigQuery Editionsの登場およびOnDemandの価格変更 注意(Disclaimer) BigQuery Editionsの設定を行なう providerのバージョンを上げる Reservationの作成およびAssignmentの設定 脱線: BigQuery Editionsを選択して、OnDemandよりコストが上がってしまう場合 背景: BigQuery Editionsの登場およびOnDemandの価格変更 2023/03/29からBigQuery Editionsが販売開始され、2023/07/05からBigQueryのOnDemandの価格変更が適用されます(何もしないとコストが上がる)。 趣味プロジェクトでも多少BigQueryを利用していますが、OnDemandを利用しているので何もしないと約25%コストが上がってしまいます。しかし、うまいことBi

    Terraform経由でBigQuery Editionsの設定を行なう - yasuhisa's blog
    sh19910711
    sh19910711 2023/05/21
    "BigQuery Editionは割と最近出た機能なので、providerのバージョンが古いと設定できません / OnDemandでは2000スロット固定 + Autoscalerでは処理に使ったスロット時間に比例して課金 / EditionsではOnDemandのような無料枠がない"
  • dbt Cloudが自動で作成したBigQueryのデータセットのうち、古いデータセットを削除するマクロを運用する - yasuhisa's blog

    背景: dbt CloudはCIの意味でも便利 課題: Pull Requestを閉じてもデータセットは自動では消えない場合がある 解決案: 作成から一定期間立ったデータセットはマクロで定期的に掃除させる その他の解決策 考慮すべき点 背景: dbt CloudはCIの意味でも便利 仕事dbt Cloudを利用している。SQLyamlファイルは手元の環境で書いてGitHubにpushする形で生活しているので、実はdbt CloudのIDEにはお世話になっていないのだが、それでも便利に使っている。dbt CloudとGitHubの連携の設定をすると、特にGitHubでPull Requestを作った際にPull Requestに対応したデータセットやテーブルを作ってくれるのが便利である。 dbt_cloud_pr_1862_917のようなPull Requestのidに沿ったデータセット

    dbt Cloudが自動で作成したBigQueryのデータセットのうち、古いデータセットを削除するマクロを運用する - yasuhisa's blog
    sh19910711
    sh19910711 2023/02/24
    期限付きデータセットが欲しい / "dbt Cloud: Pull Requestに対応したデータセットやテーブルを作ってくれる / カスタムスキーマを使っている場合、Pull Requestを閉じてもdbt Cloudが自動で作ったデータセットが削除されない"
  • Argo Workflowsの代替としてのCloud Workflowsの調査 - yasuhisa's blog

    夏休みの自由研究です。軽く触ってみました程度の技術調査なので、あまり当てにしないでください...。 Argo WorkflowsからCloud Workflowsへの移行のモチベーション ワークフローエンジン上で動かしている既存のジョブ Cloud Workflowsとは ワークフローを動かしてみる よかったポイント 改善して欲しいポイント 所感 Argo WorkflowsからCloud Workflowsへの移行のモチベーション 仕事やプライベートでデータ基盤や機械学習のワークフローエンジンとして、Argo Workflowsを最近ずっと使っている。単体だと足りない部分も多少あったが、補助のスクリプトを自前で書くことで概ね満足した使い勝手になっている。 一人や少人数のチームで使う分にはいいのだが、Argo WorkflowsはKubernetesネイティブなワークフローエンジンというこ

    Argo Workflowsの代替としてのCloud Workflowsの調査 - yasuhisa's blog
    sh19910711
    sh19910711 2022/08/28
    "よかったポイント: 実行前にワークフローを実行するためのDAGが見える > argo workflowsは実行中のものについてはDAGが見えるが、実行前には分からないので便利 / Cloud Monitoring Metricsでワークフローのメトリックが取得できる"
  • Rettyにおける推薦文からの見出し抽出の論文を読んだ - yasuhisa's blog

    OR学会の自然言語処理と数理モデルの特集で、はてなと同じくC向けのサービスを運営しているRettyさんの論文が出ていたので、週末に論文を読みました。方法論としてはシンプルだけど、サービスへの貢献もなかなかありそうだなーと思いながら眺めました。 CiNii 論文 -  優先度学習による推薦文からの見出し抽出 (特集 自然言語処理と数理モデル) http://www.orsj.or.jp/archive2/or62-11/or62_11_696.pdf 過去の機関誌目次|公益社団法人 日オペレーションズ・リサーチ学会 OR学会、昔の論文も自由に見れていいですね! 箇条書きスタイルでまとめておきます。 推薦文からレストランの特徴を表わす見出しを自動で抽出したい 全部で80万レストランあり、見出し文の定期的な更新もやりたいので、人手では難しい 優先度学習を使って見出しを抽出する方法を提案 一種の

    Rettyにおける推薦文からの見出し抽出の論文を読んだ - yasuhisa's blog
    sh19910711
    sh19910711 2022/04/17
    "推薦文からレストランの特徴を表わす見出しを自動で抽出 / 優先度学習: 一種のランキング学習のようなもの + 生成するわけではなく抽出型。一種の要約タスクと見ることもできる / 推薦文に対して部分文字列を全列挙"
  • BigQuery MLでスロット使用量が急増しているプロジェクトやユーザーを異常検知する - yasuhisa's blog

    背景 どうやって異常を検知するか BigQuery MLでの異常検知 検知できるモデルの種類 共通設定 データの前準備 モデルの学習 モデルを元にスロット使用量が異常に増加していないか予測する 所感 背景 BigQueryはオンデマンドとフラットレート(定額料金)がある オンデマンドはスキャン量がお金に直結するため、INFORMATION_SCHEMA.JOBS_BY_*などを使ってクエリ警察をしている方も多いはず INFORMATION_SCHEMAに代表されるデータ管理に役に立つ現場のノウハウを最近会社のTech Blogに書いたので、そちらも見てね 一方で、フラットレートに関しては定額使いたい放題のプランであるため、オンデマンドよりはクエリ警察をしていない場合もある 見れるなら見たいが、どうしても支出に直結するオンデマンドを優先して見てしまいがち。工数も限られている が、あまりに自由

    BigQuery MLでスロット使用量が急増しているプロジェクトやユーザーを異常検知する - yasuhisa's blog
    sh19910711
    sh19910711 2022/03/11
    一瞬BQMLでスロット逼迫してる話かと思った / "SQLを書くだけで前処理から学習、予測までBigQueryが面倒を見てくれる / 異常検知のアラートを運用に乗せるためには、false positiveをなるべく減らすのをまず先に考える"
  • dbtを触ってみた感想 - yasuhisa's blog

    データエンジニア系の勉強会で最近dbtがぱらぱらと話題に出てくるようになった & 4連休ということで、夏休みの自由研究がてらdbtを触ってみました。書いてる人のバックグラウンドは以下の通り。 DWHやデータマートの構築のためのETLツールを模索中(特にTの部分) プライベートではDataformを使っている 前職でも仕事の一部で使っていた 開発効率を計測するデータ基盤の管理にDataformを使ってみた - yasuhisa's blog 定期バッチ処理はArgo Workflows on GKEでやっている 触ってみないと肌感とか自分で運用できるかのイメージが湧かないのでね。 Dataformとの比較 細かいノウハウ 手元や番環境での動作 Argo Workflowとの連携 環境によってDWHの提供するバージョンを差し替える DWHやデータマートの外の情報をデータリネージに加える 既存

    dbtを触ってみた感想 - yasuhisa's blog
    sh19910711
    sh19910711 2021/07/26
    "小さく切り出して他のツールと組み合せやすい / Airflowとの組み合わせが人気っぽいけどArgo Workflowsでも全く問題なく使える / ワークフローエンジンを自前で管理できる技術力や工数がある場合にはdbtは便利そう"
  • データウェアハウスのバージョン管理をどうやるか - yasuhisa's blog

    というのをチームで議論する機会があったので、書いてみます。「うちではこうしている」とか「ここはこっちのほうがいいんじゃない?」とかあったらコメントで教えてください。 背景 / 前提 データウェアハウスのテーブルを社内に広く提供したい 初期の提供時期が過ぎてしばらくすると、要望を元にスキーマの変更や集計ロジックの変更が入る (事前にレビューはもちろんするが)SQLのミスなどで以前のバージョンに戻したいといったことがありえる 他の部門では新しいバージョンをすでに使っていて、気軽に戻せないこともある データウェアハウスのバージョンを場面に応じて複数提供できると都合がよい 一方で、大多数のデータウェアハウスのユーザーは最新バージョンの利用だけでよいはず SSOT(Single Source of Truth)になっていて欲しいわけなので... 複数バージョン見えていると「どのバージョンを使えばいい

    データウェアハウスのバージョン管理をどうやるか - yasuhisa's blog
    sh19910711
    sh19910711 2021/07/16
    Dimensional Modelingを徹底して無闇にテーブルを作らず必要最小限のテーブルとクエリの実行で済む状態に持っていくのが良いと思う(集計に強いので) / "要望を元にスキーマの変更や集計ロジックの変更が入る"
  • 最近の砂場活動その24: Embulkでのデータ転送を差分転送にする - yasuhisa's blog

    差分転送するモチベーション 機械学習を使った情報推薦を行なうために、RDSのテーブルをBigQueryに定期転送しています。細かいことは気にしたくなかったので、一日一回の洗い替え(全データ送信で全部上書き)していましたが、もう少し鮮度を上げたくなりました(新しい情報に対して推薦ができないため)。何も考えずに定期転送の頻度を上げると 1: 転送のためのCPUコスト 2: AWSからGCPへのデータ転送量 が気になってきます。個人の趣味プロジェクトでは、特に2が大きい。先月のAWSの利用料金を見て、涙を流していました...。というわけで、情報の鮮度は上げつつもう少し効率的に定期転送するべく、Embulkでの差分転送をすることにしました。 やり方 差分だけBigQueryに転送する 基的にはメルカリメソッドそのままです。いつもお世話になっております。 updated_atのような最終更新日時が

    最近の砂場活動その24: Embulkでのデータ転送を差分転送にする - yasuhisa's blog
    sh19910711
    sh19910711 2021/06/01
    BigQueryのQUALIFY句って単体で利用できないのか
  • 最近の砂場活動その23: Cloud MonitoringでKubernetesのバッチ処理を監視する - yasuhisa's blog

    Kubernetes上で動かしているバッチ処理の監視をCloud Monitoringで行なおうと思ったのですが、素朴にやるとちょっと困りました。一工夫したので、メモを残しておきます。 背景 Cloud Monitoringで素朴にバッチ監視を行なう これだと困る...! 次のバッチが成功するまでインシデントが閉じないようにする 背景 Webサービスの監視と同様にバッチ処理についても監視は必要です MackerelなどのSaaSを使うと、バッチ処理についても簡単に監視できます 最近の砂場活動その10: songmu/horensoを使ってバッチの処理時間をMackerelのサービスメトリックに記録する - yasuhisa's blog ただ、仕事のチームではMackerelを今は使っていません。GCPを使っているので、Cloud Monitoringでやるかなーという感じ メトリックやダ

    最近の砂場活動その23: Cloud MonitoringでKubernetesのバッチ処理を監視する - yasuhisa's blog
  • 開発効率を計測するデータ基盤の管理にDataformを使ってみた - yasuhisa's blog

    Dataformを初めて使ってみたので、雑に感想を書いておきます。結構よかった。 使ってみようとした背景 Dataformについて 試してみてどうだったか よかった まだまだこれからっぽいところ & 気になり 参考 使ってみようとした背景 今週、社内の開発合宿に参加していた。変更のリードタイムやデプロイ頻度などのFour Keysにあるような指標を計測できるデータ基盤を作るのが目標。様々なチームの開発のパフォーマンスをトラッキングしやすくして、うまくできているチームがなぜうまくいっているのかを明らかにしたり、改善施策を行なった結果指標も改善しているか定量的に確認できるようにして、開発効率を上げる土台を作るというのが目的。この辺の詳しいことは後々別のエントリで書かれると思う。 自分のチームは3人構成で、在宅のオンラインでやっていた。 id:shiba_yu36さん Mackerelチームでも

    開発効率を計測するデータ基盤の管理にDataformを使ってみた - yasuhisa's blog
  • 劣モジュラ最大化によるエントリの推薦をやってみた - yasuhisa's blog

    背景 半年前から機械学習に関するよさそうなエントリを提示してくれるbot(ML君)を運用しています。 大量のtweetの中から関連するエントリを人手で探す手間は省けるようになったのですが、最近別の問題が起こっています。以下の画像はある日に提示されたエントリの結果ですが、arxivの論文(しかもほぼ深層学習関連のもの)ばかりになっています…。ML君はURLが与えられたときに、それが機械学習に関連するいいエントリかどうかを判定しますが、提示したエントリの話題が重複しているなど条件は全く考慮していないので、当然と言えば当然の結果です。ML君を責めてはいけない。 上のような推薦結果は私が深層学習研究者/エンジニアなら喜ぶかもしれませんが、残念ながらそうではありません。機械学習/自然言語処理に関連する企業のニュース/githubのライブラリなど、色々なトピックについてカバーして欲しいものです。問題設

    劣モジュラ最大化によるエントリの推薦をやってみた - yasuhisa's blog
    sh19910711
    sh19910711 2020/05/30
    "X語以内でなるべく多くのトピックをカバーするという問題は、典型的な離散最適化問題 / 最適化理論の分野では、分枝限定法やラグランジュ緩和、劣モジュラ最適化などがよく使われます"
  • BigQueryのテーブルのメタデータをCloud Data Catalogで管理する - yasuhisa's blog

    自分が使いたいと思ったBigQuery上のリソース(tableやview)、内容を事前に完全に把握できている、ということは結構少ないのではないかと思います。そういったときに手助けをしてくれるのがメタデータです。BigQueryのリソースに対するメタデータを、Cloud Data Catalogのタグとして付与する方法を紹介します。Cloud Data Catalogを使うことで、分析者が必要なリソースに素早く辿り付いたり、正確な分析をするためのサポートができます。 BigQuery関連のAudit logを元に、以下の情報をData Catalogのタグに入れた。 - 最後にクエリを投げた{日, 人} - クエリを投げられた回数 「あまり使われていないので、信用できないデータかも」「最後にXXXさんがクエリ投げてるから、詳細詳しいかも」みたいな用途を想定してる pic.twitter.co

    BigQueryのテーブルのメタデータをCloud Data Catalogで管理する - yasuhisa's blog
  • 俺的統計の進め方 - yasuhisa's blog

    id:wakutekaとid:HashのIntroduction to the theory of statisticsの読書会にこっそりチャットのログを見たりしながら参加しているんだけど、統計な研究室にいる俺がほぼ一年間でどういう感じで勉強を進めてきたかを書いみようと思う。新4年生も入ってくる時期ですしね(あんまり関係ない)。 今俺がいる研究室の先生や先輩の影響と俺のバイアスを強く受けた例である、ということを念頭に置いて読んだがいいと思う。 統計学の基礎学部の3年から4年になる頃だと、統計学ってt検定だとか検定とか、あるいは重回帰とかの多変量解析みたいなのを想像している頃だったかもしれない。が、そんなのは基礎ができればいくらでも自分で勝手にできると思うので、とにかく基礎となるものを固めるといいと思う。さっき書いたような応用っぽいのは探せばきりがないくらい出てくるし、全部身につけたからって

  • はてな社内でKaggleハッカソンを行ないました(TakingDataリベンジマッチ編) - yasuhisa's blog

    先週末、はてな社内でKaggleハッカソンを行ないました。丸一日、各自好きなKaggleのコンペに取り組んで、得られた知見を共有するという会です。 自分は以前TalkingDataというコンペに参加していたのですが、データサイズが結構大きく、一月くらいやってみたももの試行錯誤に四苦八苦してしまい、途中で離脱していました...。このハッカソンでは、そういったデータセットでも何とかできるようになろう!ということを目標にして参加しました。もちろん1日だけではさすがに時間が足りないので、ハッカソン前の10日くらいは定時後にちまちま作業をやっていました。 以下はハッカソン終了後に使った発表資料です。Kaggle上位の人にとっては当たり前のことしか書いてないかもしれませんが、社内でこういった知見をじわじわと貯めていくことが大事だと思っています。なお、ハッカソン終了後にAWSのでかいインスタンスを借りて

    はてな社内でKaggleハッカソンを行ないました(TakingDataリベンジマッチ編) - yasuhisa's blog
  • 最近の砂場活動その2: ECS/Fargate/AWS Batch編 - yasuhisa's blog

    ゴールデンウィークということもあり、前回に引き続き砂場活動をやりました。前回はCloudFormationを使い、ElastiCache/RDSを立てて、EC2の上でWebアプリを動かすところまでをやりました。 今回はECSやFargate、AWS Batchなどコンテナの恩恵をより受けられるようにしてみようと思います。大分モダンになってきた。 コンテナ化 ECSで動かす on EC2 ECSを構成する概念 ECS用のEC2の準備 タスク定義/サービス定義 オートスケール ECSで動かす on Fargate Batch処理 困ったこと まとめ コンテナ化 ECSで動かすことを見越して、Webアプリをコンテナ化しました。といってもDockerfileを書く程度なので、大したことはない。中間ファイルに吐いていたような状態はRDS/ElastiCache/S3などの外部のDBやストレージに持た

    最近の砂場活動その2: ECS/Fargate/AWS Batch編 - yasuhisa's blog
  • KaggleのCTR予測コンペで上位10%に入るまでの試行錯誤 - yasuhisa's blog

    週末KagglerとしてavazuのCTR予測コンペに参加しました。Kaggleは機械学習版のISUCONだと思ってもらえばよいです。コンペ自体は終わっているので、late submiteであまり意味はないかもしれません、練習です。leaderboard上で上位10%以内に行けたので、そこまでの試行錯誤をメモしておきます。謎ノウハウ(?)を持っているガチ勢じゃないと上位に行けないものかと思っていましたが、基に忠実にやればこれくらいの順位(上位7.6%)に行けましたし、他の人の工夫を垣間見えるという意味でも現場の機械学習やり始めたエンジニアにお薦めできそうでした。 参加の動機 目標感: 頑張りすぎずに上位10%以内に入る 試行錯誤 AthenaとRedashによる探索的データ解析 ベンチマークをまず超える 線形分類器でシンプルな特徴量 時系列要素を忘れていて過学習発生 特徴量エンジニアリン

    KaggleのCTR予測コンペで上位10%に入るまでの試行錯誤 - yasuhisa's blog
  • Rcppを試してみる - yasuhisa's blog

    この前紹介したGoogle Summer of Codeのやつですが、メンターがDirk Eddelbuettelさんで、この人はRcppというパッケージを作ってる人で僕はこのパッケージを使ったことがなかったので、使ってみようじゃないかというお話。以下を参考にしつつ。 Rcpp: Seamless R and C++ integration 対象はたぶんC拡張書いたことある人or書いてみたい人。 RのC拡張はめんどい&Rcppを使うと楽ができるRのC拡張(Writing R Extentionを印刷して枕の横に置きましょう)を書くときの典型例として、例えばこんな感じのコードがよくある。 SEXP ab; PROTECT(ab = allocVector(REALSXP, 2)); REAL(ab)[0] = 123.45; REAL(ab)[1] = 67.89; UNPROTECT(1)

    Rcppを試してみる - yasuhisa's blog