Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Battle of bazel build - OPTiM TECH NIGHT
Search
OPTiM
October 24, 2019
Technology
0
710
Battle of bazel build - OPTiM TECH NIGHT
OPTiM
October 24, 2019
Tweet
Share
More Decks by OPTiM
See All by OPTiM
MDMサービスの巨大さと特殊さに負けない開発体制と品質プロセス / technight250218
optim
0
71
Nuxt3マイグレーションについて / nuxt_migration
optim
1
160
挑戦を楽しむ!保守運用の管理課題への取り組み
optim
0
110
開発生産性を始める前に開発チームができること / optim-improve-development-productivity.pdf
optim
1
680
Go×LLMで新たなコード生成の可能性を探る / GolangDeveloperNight_Go×LLM
optim
0
660
スプリントレビュー(バザー形式)とそれを支えるCI CD / sprint-review-bazaar-and-supporting-cicd
optim
0
770
Vue.jsを用いて数万の農地データ情報を数秒で表示させるまでのカイゼンの軌跡
optim
1
410
Metabaseを使ったコスト可視化とコスト最適化への道 / sre-cost-visualization
optim
0
730
新卒がアプリをEKSにデプロイした話 / sre-newcomer-deploy-app-to-eks
optim
1
360
Other Decks in Technology
See All in Technology
サイト信頼性エンジニアリングとAmazon Web Services / SRE and AWS
ymotongpoo
7
1.6k
急成長する企業で作った、エンジニアが輝ける制度/ 20250227 Rinto Ikenoue
shift_evolve
0
140
あなたが人生で成功するための5つの普遍的法則 #jawsug #jawsdays2025 / 20250301 HEROZ
yoshidashingo
2
300
Change Managerを活用して本番環境へのセキュアなGUIアクセスを統制する / Control Secure GUI Access to the Production Environment with Change Manager
yuj1osm
0
100
JavaにおけるNull非許容性
skrb
2
2.6k
ExaDB-XSで利用されているExadata Exascaleについて
oracle4engineer
PRO
3
260
OSS構成管理ツールCMDBuildを使ったAWSリソース管理の自動化
satorufunai
0
650
【Findy】「正しく」失敗できる チームの作り方 〜リアルな事例から紐解く失敗を恐れない組織とは〜 / A team that can fail correctly by findy
i35_267
5
900
脳波を用いた嗜好マッチングシステム
hokkey621
0
290
Snowflakeの開発・運用コストをApache Icebergで効率化しよう!~機能と活用例のご紹介~
sagara
1
470
Snowflake ML モデルを dbt データパイプラインに組み込む
estie
0
100
DevinでAI AWSエンジニア製造計画 序章 〜CDKを添えて〜/devin-load-to-aws-engineer
tomoki10
0
140
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
640
Practical Orchestrator
shlominoach
186
10k
Making Projects Easy
brettharned
116
6k
How STYLIGHT went responsive
nonsquared
98
5.4k
GitHub's CSS Performance
jonrohan
1030
460k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
10
510
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
Designing for humans not robots
tammielis
250
25k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
52k
The Cost Of JavaScript in 2023
addyosmani
47
7.4k
Building Adaptive Systems
keathley
40
2.4k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Transcript
Copyright © OPTiM Corp. All Right Reserved. 1 2019/10/24 OPTiM
TECH NIGHT Battle of bazel build (Googleビルドツールではまらないための対策)
Copyright © OPTiM Corp. All Right Reserved. 2 徳⽥ (
@dakuton) OPTiM Corporation / R&D Team 2009年⼊社 定量・⾳声データ解析 + エッジ推論 ⾃⼰紹介 https://speakerdeck.com/dakuton
Copyright © OPTiM Corp. All Right Reserved. 3 Getting Startedで
Install Bazel and use bazel build って書いてあるけど… まとめ # Using Bazel's APT repository $ sudo apt-get install bazel Failed # for macOS $ brew install bazel Failed
Copyright © OPTiM Corp. All Right Reserved. 4 Googleが中⼼となって開発しているOSS等で⽤いられているビルドツール Bazelとは︖
並列実⾏ 差分ビルド(テスト) Platform: Java, C++, Go, Android, iOS, etc HostOS: Ubuntu, CentOS, macOS , Windows ビルド⼀意性を担保 CI等でビルド再現が容易 Fast Multiple Languages Reproducible Extensible Starlark(Python likeな⾔語)による ビルドスクリプト拡張 https://bazel.build/faq.html
Copyright © OPTiM Corp. All Right Reserved. 5 利⽤例: モバイル機械学習
Copyright © OPTiM Corp. All Right Reserved. 6 利⽤例: モバイル機械学習
Copyright © OPTiM Corp. All Right Reserved. 7 Googleが中⼼となって開発しているOSS等で⽤いられているビルドツール MediapipeでのBazel活⽤
並列実⾏ 差分ビルド(テスト) Platform: Java, C++, Go, Android, iOS, etc HostOS: Ubuntu, CentOS, macOS, Windows ビルド⼀意性を担保 CI等でビルド再現が容易 Fast Multiple Languages Extensible Starlark(Python likeな⾔語)による ビルドスクリプト拡張 Reproducible のクロスプラットフォームビルドを で実現
Copyright © OPTiM Corp. All Right Reserved. 8 Build from
sourceで Install Bazel and use bazel build に従うとBazelの破壊的変更で互換性がないバージョンがインストールされる Bazel利⽤による問題点1 # for macOS $ brew install bazel Success $ bazel build -c opt --config=android_arm64 mediapipe/examples/andr oid/src/java/com/google/mediapipe/apps/handtrackinggpu Failed 10/24時点で1.1.0がインストールされる
Copyright © OPTiM Corp. All Right Reserved. 9 Bazel必要バージョン確認⽅法 •
⽐較的規模の⼤きいプロジェクトであればCI向けのビルドスクリプト or Dockerfileが ⽤意されているので利⽤しているバージョンを確認しインストール • https://github.com/tensorflow/tensorflow/blob/r2.0/tensorflow/tools/ci_build/ install/install_bazel.sh 破壊的変更のチェック⽅法 • --incompatible_xxxxxxx や --experimental_xxxxxxx と指定されているものが対象 • --all_incompatible_changes で影響をチェック Bazel利⽤による問題点1(対策)
Copyright © OPTiM Corp. All Right Reserved. 10 Java系プロジェクトで起こっていた問題(現在は修正済み) bazel
build対象プロジェクトとBazel本体で要求されるJDKが異なる Bazel利⽤による問題点2 <<<<<<< HEAD apt-get update && apt-get install -y openjdk-11-jdk ======= apt-get update && apt-get install -y openjdk-8-jdk >>>>>>> Project import generated by Copybara. https://github.com/google/mediapipe/commit/af676420555f60c71c481f597d5ed3aa3b4f6789 Android SDKはOpenJDK 11⾮対応
Copyright © OPTiM Corp. All Right Reserved. 11 Bazel利⽤による問題点2(+対策) $
sudo apt-get -qqy install gnupg2 $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9 $ sudo apt-add-repository "deb http://repos.azul.com/azure-only/zulu/apt stable main" $ sudo apt-get -q update $ sudo apt-get -y install zulu-8-azure-jdk $ bazel info java-runtime OpenJDK Runtime Environment (build 1.8.0_212-b04) by Azul Systems, Inc. https://mirror.bazel.build/openjdk/index.html 参考: 最適なOpenJDKディストリビューションの選び⽅ https://www.oracle.co.jp/campaign/code/2019/pdfs/oct2019_b-3-3.pdf LTSサポート終了したOpenJDKを回避する場合 Bazel JDKバンドル版が利⽤しているZulu OpenJDKを⽤いる
Copyright © OPTiM Corp. All Right Reserved. 12 余談 OracleのSSL証明書が期限失効して構築失敗してた(4/27)
Copyright © OPTiM Corp. All Right Reserved. 13 ローカル実⾏環境のリソースを⼤量に使ってビルドする ・デフォルト値だとCPUの半分+RAMの2/3を占有
Bazel利⽤による問題点3(+対策) $ bazel build //foo ¥ --local_cpu_resources=2 ¥ --local_ram_resources=2048 ⼤規模プロジェクトでは CPU+RAMリソース利⽤量を指定するのが無難
Copyright © OPTiM Corp. All Right Reserved. 14 • Install
Bazel どおりだと bazel build は失敗する • バージョンは確認してビルドしましょう まとめ
Copyright © OPTiM Corp. All Right Reserved. 15