[フレーム]
1 - 40 件 / 136件
イーロン・マスクが YouTube チャネルでスペース X のテキサス工場スターベースの中を歩き回りながらロケット製造や電気自動車について説明しているのを観た。ツイートしたこの件。 これがめちゃくちゃに示唆に富んでいて面白かった。この日のイーロン・マスクは饒舌で楽しそうなので、かなり魅入ってしまった。きっと彼はカンファレンスや会議室の中でインタビューを受けるよりも、工場でみんながロケット作ったり作業している場で語った方が情熱を込めていろいろ説明してくれるんだと思う。 この中で製造工程の話があって、これはロケット製造などの特定分野だけでなく、IT やその他の分野にでも当てはまる普遍的な知見だと思ったので意訳してみた。ざっとビデオを観て印象に残った部分だけを意訳した。あくまで大枠で言ってることをまとめただけなので、もし詳細に興味があればぜひビデオを観てイーロン・マスクの話を直接聞いて確認してく
指針 厳密解法に対しては、解ける問題例の規模の指針を与える。数理最適化ソルバーを使う場合には、Gurobi かmypulpを用い、それぞれの限界を調べる。動的最適化の場合には、メモリの限界について調べる。 近似解法に対しては、近似誤差の指針を与える。 複数の定式化を示し、どの定式化が実務的に良いかの指針を示す。 出来るだけベンチマーク問題例を用いる。OR-Libraryなどから問題例をダウンロードし、ディレクトリごとに保管しておく。 解説ビデオもYoutubeで公開する. 主要な問題に対してはアプリを作ってデモをする. 以下,デモビデオ: 注意 基本的には,コードも公開するが, github自体はプライベート そのうち本にするかもしれない(予約はしているが, 保証はない). プロジェクトに参加したい人は,以下の技量が必要(github, nbdev, poetry, gurobi); ペー
はじめに 本書は,筆者が長年書き溜めた様々な実務的な最適化問題についてまとめたものである. 本書は,Jupyter Laboで記述されたものを自動的に変換したものであり,以下のサポートページで公開している. コードも一部公開しているが,ソースコードを保管した Github 自体はプライベートである. 本を購入した人は,サポートページで公開していないプログラムを 圧縮ファイル でダウンロードすることができる. ダウンロードしたファイルの解凍パスワードは<本に記述>である. 作者のページ My HP 本書のサポートページ Support Page 出版社のページ Pythonによる実務で役立つ最適化問題100+ (1) ―グラフ理論と組合せ最適化への招待― Pythonによる実務で役立つ最適化問題100+ (2) ―割当・施設配置・在庫最適化・巡回セールスマン― Pythonによる実務で役立つ
こんにちは。エンジニアの谷井です。 フォルシアでは、Spookと呼んでいる技術基盤を用いて、主に旅行業界やMRO業界に対して、膨大で複雑なデータを高速検索できるアプリケーションを提供しています。 今回はその高速検索のノウハウのうち、特にDBの扱いに関連する部分について、ベテランエンジニアへのインタビューを通してそのエッセンスをまとめてみました。 一般的なベストプラクティスだけでなく、検索性能を高めることに特化しためずらしいアプローチもあるので、ぜひご覧ください。 フォルシアにおける検索DBについて まず前提としてフォルシアで扱うデータについて軽く説明します。 扱うデータの複雑さ たとえば、旅行会社向けのアプリケーションであれば、宿泊素材の情報としては ホテルの情報「〇〇ホテル」(~約2万件) プランの情報「朝食付き・ロングステイ△しろさんかく△しろさんかくプラン」(0~1500件/施設) 客室の情報(~100件/
「Web Speed Hackathon 2022」という「非常に重たいWebアプリをチューニングして、いかに高速にするかを競う競技」があります。 リモート参加で11月1日から27日まで開催されています。 ここで言う「高速」とはCore Web Vitalsのスコアが高いことを言い、Lighthouseのスコアをベースにした500点満点の争いです。 ISUCONのフロントエンド版ですね。 以前にも同じ課題で「学生向け」と「社内(サイバーエージェント)向け」が行われたらしく、まだ500点を出した人はいません。 そこで僕は「満点を出したい」と思い、初日から、いやむしろフライングしていたからその前から頑張ってきました。 そして、先日(17日)、ついに500点満点を出しました! たぶん、レギュレーションはクリアしている、はずです(もし違反してたらすいません...)。 自動で行われる「Visual Re
去年からフロントエンドのパフォーマンスについて断続的に学んでいるが、自分の頭のなかにある知識はどれも断片的で、まとまりを欠いているような感覚があった。 知識と知識がつながっておらず、各施策が何のために行われるのかも、必ずしも自明ではなかった。何となく「パフォーマンスに効果がある」と言ってしまうが、それが何を指しているのかは実は曖昧だった。 このような状態では新しい知識を得ていくのが難しいというか、効率的に行えないように思えた。議論の背景が分からないし、文脈や問題意識を上手く掴めないから。何の話をしているのかよく分からない、という状態になりがち。書かれてあることの意味は分かっても論旨を掴めているわけではないから、自分のなかに定着しない。 そこで、現時点で自分が知っていることを整理して、自分なりに分類しておくことにした。 当たり前だが、どのテクニックがどの程度有効なのかは、状況によって違う。
このサイトでは、SQL を高速化するためのちょっとしたパフォーマンス・チューニングの技術を紹介します。と言っても、『プログラマのためのSQL 第2版』の受け売りがほとんどなので、この本を読んでいただければ、本稿を読む必要はありません。 最初に、パフォーマンス・チューニングに関する全体の方針を述べておくと、それはボトルネック(一番遅いところ)を改善することです。当たり前ですが、既に十分速い処理をもっと速くしたところで、システム全体のパフォーマンスには影響しません。従って「処理が遅い」と感じたら、最初にすることは、SQL やアプリの改修ではなく、「どこが遅いのか」を調査することです。いきなりあてずっぽうで改善をはじめても効果は出ません。医者が患者を診るとき最初にすることが検査であるのと同じです。病因が何であるかを突き止めてからでないと、正しい処方はできないのです。 その基本を承知していただいた
リングバッファのイメージ図 1. リングバッファとは何か 機能的にはFirst In First Out (FIFO)とも呼ばれるキューの一種であるが、リング状にバッファを置いてそれの中でReadとWriteのインデックスがグルグルと回る構造をとる事によって容量に上限ができることと引き換えに高速な読み書き速度を得たものである。キューを単に実装するだけなら山ほど方法があって線形リストを使ってもいいしスタックを2つ使っても原理的には可能だ。その中でもリングバッファを用いた方法の利点はひとえに性能の高さでありメモリ確保などを行わないお陰でシステム系の様々な場所で使われている。 これの実装自体は情報系の大学生の演習レベルの難度であるが少し奥が深い。まずリングバッファのスタンダードなインタフェースと実装は以下のようなものである。 class RingBuffer { public: explicit
この記事でお題にするのはCPUレジスタ上の整数除算です。以下、単に除算とも書きます。 除算は非常に高コストな演算なため、コンパイラは最適化によって、できるだけ整数除算を別の計算に置き換えようとします。 最適化ができる場合の一つとして、割る数が定数である場合があります。頭のいいコンパイラは、除算を乗算とビットシフト等を駆使した演算に置き換えます。この記事では、そういった最適化の背景にある理屈を部分的に解説します。 計算機環境としてはモダンなx86 CPUを仮定します。したがってレジスタは32/64ビットであり、負数は2の補数表現になっています。ある程度は他の命令セットでも通用する話になっているかもしれません。 そもそも整数の除算とは プログラミングにおける整数の除算の定義について確認します。整数$n$を整数$d$で割るとき $$ n = q \times d + r $$ が成り立つように除
こんにちは、クックパッドマート流通基盤アプリケーション開発グループのオサ(@s_osa_)です。 生鮮食品の EC サービスであるクックパッドマートでは、「1品から送料無料」をはじめとするサービスの特徴を実現するために、商品の流通網を自分たちでつくっています。 このエントリでは、商品をユーザーに届けるための配送ルートを自動生成している仕組みについて紹介します。 解決したい問題 配送ルートとは クックパッドマートにはいくつかの流通方法がありますが、ここでは「ステーション便」と呼ばれるものについて解説します。他の流通方法などを含む全体像が気になる方は以下のエントリがオススメです。 クックパッド生鮮 EC お届けの裏側 2022 年版 - クックパッド開発者ブログ ステーション便では、ハブと呼ばれる流通拠点からユーザーが商品を受け取りに行く場所であるステーションへと商品を運びます。東京都、神奈川
数理最適化案件とAI/機械学習案件とのアナロジー 「やってみなければわからない」中で僕たちDSはどうするか本記事では表題に関して、脳筋系ゆるふわVTuberこと入社2年目DSの岡部がお送りいたします。(DS=データサイエンティスト) 発... ◆だいやまーく【理論・実践】(2021年時点で)オススメの参考書 最大のアップデートはこちらの2冊です。参考書は時代の流れに合わせていいものが出てくるものですね。もちろん過去の参考書にもいいものはたくさんありますが、日進月歩の分野である以上、新しいものに軍配が上がりやすい構図はあると思います。 しっかり学ぶ数理最適化 モデルからアルゴリズムまで Pythonではじめる数理最適化: ケーススタディでモデリングのスキルを身につけよう 以下それぞれの所感です 【理論】「最適化分野全般を知るための『最適解』」とも言われている教科書 僕が最適化にハマっていた当時は様々な本
最適輸送問題(Wasserstein 距離)を解く方法についてのさまざまなアプローチ・アルゴリズムを紹介します。 線形計画を使った定式化の基礎からはじめて、以下の五つのアルゴリズムを紹介します。 1. ネットワークシンプレックス法 2. ハンガリアン法 3. Sinkhorn アルゴリズム 4. ニューラルネットワークによる推定 5. スライス法 このスライドは第三回 0x-seminar https://sites.google.com/view/uda-0x-seminar/home/0x03 で使用したものです。自己完結するよう心がけたのでセミナーに参加していない人にも役立つスライドになっています。 『最適輸送の理論とアルゴリズム』好評発売中! https://www.amazon.co.jp/dp/4065305144 Speakerdeck にもアップロードしました: https
はじめに Pythonは世界的にも人気のあるプログラミング言語ですが、実行速度については課題があります。Pythonの実行速度を高速化したい、という要求は根強く、これまでにも様々なツールや処理系が開発されています。 この記事ではMITの研究者らが開発したPythonを高速化するツール「Codon」について紹介します。 この記事を3行でまとめると: 高性能で簡単に扱えるPythonコンパイラ「Codon」 Pythonとの互換性がありながら、CやC++に匹敵する高速化を実現 実際にPythonコードが100倍速くなることを検証 Codonとは Codonは高性能なPythonコンパイラです。実行時のオーバーヘッドなしにPythonコードをネイティブなマシンコードにコンパイルし、シングルスレッドで10-100倍以上の高速化が実現できます。Codonの開発はGithub上で行われており、2021
はじめに MySQL(InnoDB)でSQLのパフォーマンスチューニングをするときに役に立つ知識をエッセンスとしてまとめました。結合(JOIN)やB-treeインデックスの探索の仕組み、実行計画の基本的な見方を紹介します。 想定する読者は、SQLのパフォーマンスを改善する必要があるが実行計画をみてもいまいちピンと来ない方です。インデックスの作成の経験や、複合インデックスやカーディナリティの知識があることを前提にしています。目標は、実行計画の内容がよく分からない読者が、実行計画をみただけでクエリが実行される様子をイメージでき、自信を持ってクエリの改善にあたることができるようにすることです。 ストレージエンジンはInnoDBを前提としています。また、インデックスはB-treeインデックスを想定しています。全文検索の転置インデックスや空間検索のR-treeインデックスについては触れません。 イン
数理最適化 Advent Calendar 2022の9日目です。 新緑の頃、新型コロナ流行の合間をぬって、ささやかな結婚披露宴を表参道の式場にて催しました。諸々の準備の中でも席次はこだわるとキリがなく、数理最適化を使って決めました。人間関係をできるだけ保つようなゲスト集合から座席集合への写像を考えます。 ゲスト間人間関係を考慮して良い感じの配席を考えたい tl;dr 披露宴をしました 知り合い関係が複雑かつ長机でゲストの席配置が難しい 組合せ爆発は本物。高々20人の配置に1週間以上悩んだ結果、数理最適化した方が早いと結論 「知り合い同士を近くに配席する」問題は非凸な二次計画になり汎用ソルバでうまく解けない ゲストを席に"輸送"すると考えて最適輸送の一種で解くとうまくいった 本質的に非凸な問題を非凸のまま、しかし性質の良い距離構造を活用するアプローチが奏功したのではないか 再現用Colab
×ばつ数理最適化」に関する取り組みの一環として検討している、需要予測を活用した業務プロセスの改善について紹介します。 はじめに 背景 数理最適化とは ×ばつ数理最適化で解決が期待できる課題 実現方法の検討 問題設定 Node-AIでの需要予測 数理最適化によるシフト計画 条件データ 定式化 プログラム 結果 まとめ おわりに はじめに こんにちは、イノベーションセンターの伊藤です。 普段はNode-AIやAI Autopilot Systemといったプロダクトの品質向上を目的に、研究開発を行っています。現在は予測精度の向上を目指した機械学習技術の研究に加え、予測結果の活用に向けた技術の研究に取り組んでいます。 また、我々のチームでは、これらの取り組みを通じて得られた研究成果やデータ分析ノウハウをごちきかというナレッジベースに体系的にまとめています。 本
著者情報 : kota-yata.com プレゼン動画 : https://www.youtube.com/watch?v=BcaPCnWZuvY
導入 本記事では、 発見的解法 (heuristics、ヒューリスティック) について扱います。 ヒューリスティックという単語の定義は、IoT用語辞書によると、 ヒューリスティック......(中略)......とは、ある程度正解に近い解を見つけ出すための経験則や発見方法のことで、「発見法」とも呼ばれます。いつも正解するとは限らないが、おおむね正解するという直感的な思考方法で、たとえば、服装からその人の性格や職業を判断するといったことは、ヒューリステックな方法といえます。理論的に正しい解を求め、コンピュータのプログラムなどに活用される「アルゴリズム」に対置する概念です。 となっています。 教科書における対応範囲は、大まかには4.6, 4.7節に相当します。なお、都合上教科書とは順番を少し変えて各内容を見ていくことにします。また、教科書に載っている内容の全ては、本記事には載っておらず、逆もまた然りです。 前
PHP カンファレンス 2021 10月2日(土) 15:40〜 Track2 でお話ししたスライドです https://fortee.jp/phpcon-2021/proposal/a795874d-9f0d-48a7-924f-a386bd1cea02 少しずつ加筆修正するかもしれません ...
兵庫県立大学情報科学研究科 第一回 数理最適化データサイエンス研修会 「数理最適化と機械学習の 融合」 講師紹介 久保幹雄 東京海洋大学教授 所属:東京海洋大学大学院 海洋工学系 流通情報工学 専門と略歴 専門は,サプライ・チェインならびに組合せ最適化, 早稲田大学理工学研究科修了,博...
Patterns and Techniques for Writing High-Performance Applications with Go¶ The Go App Optimization Guide is a series of in-depth, technical articles for developers who want to get more performance out of their Go code without relying on guesswork or cargo cult patterns. If you’re building services that need to handle real load—APIs, backend pipelines, or distributed systems—this guide focuses on t
※(注記)効果には個人差があります。 useMemoのオーバーヘッドについて ReactのuseMemoは、パフォーマンス最適化に使われるAPIです。コンポーネント内で計算やオブジェクトの生成を行う際に、以前の計算結果をキャッシュして使い回すことで再レンダリング時の計算を削減したり、新しいオブジェクトの生成を防ぐことができます。 useMemoに関しては、あくまで最適化のためのものであるから「無駄に使うべきではない」という言説がよく見られます。その理由は、useMemoのコストもゼロではなく、余計な使用はそれだけパフォーマンスの低下に繋がってしまうからです。 しかし、筆者はuseMemoのコストは微々たるものであり、本当に一目見て明らかに無駄でない限りは積極的に使うべきだと思っています。 そこで、筆者はuseMemoのオーバーヘッドがどれくらいかを調べるためのベンチマークを作成しました。この記事で
はじめに はじめまして、2023年10月にシニアリサーチャーとして入社したアドバンスドテクノロジーラボ(ATL)の梅谷俊治です。2023年9月まで、大阪大学大学院情報科学研究科にて数理最適化寄附講座教授を務めていました。 本記事では、リクルートのデータ推進室における数理最適化を活用した問題解決の取り組みをご紹介します。 数理最適化は、与えられた制約条件の下で、目的関数を最小(もしくは最大)にする最適化問題を通じて、現代社会における意思決定や問題解決を実現する数理技術の一つです。 近年では、機械学習によるデータ分析や予測の技術開発が進み次々と実用化されています。数理最適化は、それらのデータ分析や予測の結果を踏まえた上で意思決定や計画策定を実現する問題解決における出口を担当する技術です。例えば、オンライン広告などカスタマーに商品を推薦するレコメンデーションでは、機械学習を活用してカスタマーの商
Webサイトの"速さ"は、ユーザー体験を左右する重要な指標だ。とはいえ、ブラウザの中で実際にどんな処理が走っていて、どこにボトルネックがあるのかを把握するのは簡単ではない。本セッションに登壇したのは、Node.js/フロントエンド領域を専門とするフリーランスエンジニアであり、各社のWebサイトに一ヶ月単位で入り込み、Web VitalsやCI/CDの改善を行う"パフォーマンスの傭兵"として活動する竹馬光太郎氏。PageSpeed InsightsやLighthouse、DevToolsを駆使した実演を通し、問題の洗い出しからローカルでの再現、修正、そして再測定に至るまでの改善サイクルを丁寧に解説する。 パフォーマンスとはなにか?mizchi氏が見てきた現実 Node.jsやフロントエンドのパフォーマンス領域を専門とするフリーランスエンジニア・竹馬光太郎氏。SNSなどでは「mizchi」の名
これらを踏まえて polyfill-library を使って Polyfill の出し分けをすることが最適解だと確信しました。 Polyfill の出し分けの実装方法 最初に実装したコードの全体像を見せると次の通りになります。それぞれの変数や関数についての説明は後ほどおこないます。 import crypto from "crypto"; import { Response, Request } from "express"; import { getPolyfillString } from "polyfill-library"; import polyfillLibraryPackageJson from "polyfill-library/package.json"; const FEATURES_OPTION = { flags: ["gated"] }; const FEATUR
専門家が執筆した数理最適化の書籍を紹介しています. 適当に書籍を並べただけですので内容については各自で確認をお願いします. 数理最適化全般 数理最適化の概観を知りたい人向け 穴井宏和,数理最適化の実践ガイド,講談社,2013. 中山舜民,オフィスsawa(作画),橘海里(イラスト),マンガでわかる数理最適化,オーム社,2024. 数理最適化を現実問題の解決に活用するプロセスを知りたい人向け 岩永二郎,石原響太,西村直樹,田中一樹,Pythonではじめる数理最適化(第2版) ―ケーススタディでモデリングのスキルを身につけよう―,オーム社,2024. 三好大悟,Excelで手を動かしながら学ぶ数理最適化:ベストな意思決定を導く技術,インプレス,2023. 数理最適化を初めて学ぶ人が手に取る入門書 福島雅夫,新版 数理計画入門,朝倉書店,2011. 久野誉人,繁野麻衣子,後藤順哉,数理最適化,オ
はじめに こんにちは。こんばんはかもしれません。爲岡 (ためおか) と申します。 2020年4月から株式会社グロービスにて機械学習エンジニアとして働いています。 グロービスでは機械学習技術を利用したプロジェクトや、データ基盤の運用改善プロジェクトを担当しています。 機械学習技術を利用したシステムには様々なものがあると思いますが、 現状のグロービスにおいては、ユーザのリクエストに対して機械学習を行い、 すぐに結果を返す必要があるようなシステムは扱っておらず、 ある程度の時間をかけて学習、推定した結果を非同期にアプリケーションに連携するシステムのみを扱っています。 ゆえに、今のところは機械学習技術を利用したロジックを書くときに、速さを意識することはあまりありません。 一方で、空いている時間に競技プログラミングをやっていることもあり、 高速なコードについて考えたり、書いたりすることは個人的には好
JavaScript や TypeScript を使ってウェブアプリを提供する場合、開発時はimportやexportなどの ES Modules を使い、公開時はファイルをバンドルして公開することが多い。 以下の記事に書いたように、現在の主要なブラウザは ES Modules に対応してものの、バンドルせずに公開してしまうとパフォーマンスに悪影響を与える可能性がある。 numb86-tech.hatenablog.com ファイル数が増えれば増えるほど影響は深刻になるため、依存関係が深いライブラリを使っている場合などは、レイテンシが飛躍的に増加してしまう。 そのため、バンドルせずに公開するのは現実的ではない。 バンドルしてひとつのファイルにまとめてしまえば、JavaScript のダウンロードは一度で済む。 しかしそうすると今度は、バンドルファイルの肥大化という問題が発生する。 巨大なフ
この記事は、 Svelte Advent Calendar 2020 - Qiita の 22 日目です。 昨今では、フロントエンドの JS を減らす圧が強くなってきています。とくに来年 4 月に導入される Core WebVital は SEO に関わるため、 マーケティング文脈でもフロントエンドの改善施策として、パフォーマンスを上げる圧が強くなっています。 Google の UX 指標「Core Web Vitals(コアウェブバイタル)」とは?LCP・FID・CLS を解説| ferret JavaScript よ。文明を捨て、自然に還れ。 ::ハブろぐ で、ユーザー体験を遅くするものとしてやり玉に上げられるのが、サードパーティスクリプトという、サイト外から読み込まれる第三者の script です。代表的なものが Google Tag Manager や Twitter や Face
はじめに NearMeエンジニアの柿野上 拓真(Takuma Kakinoue)です。私は、数理最適化や機械学習をはじめとする高度なアルゴリズムを含むテクノロジーによって実社会の問題を解決することに高いモチベーションを持っており、NearMeでは主に自動配車システムや相乗りマッチングシステムの開発に携わっております。単に高度なテクノロジーを使ったシステムを作るだけではなく、オペレーションを含め全体の業務を「デザイン」していくことに興味関心があります。 さて、今回のテーマは、直近新たな課題として社内で挙がった「シフト組業務の自動化およびシフトの効率化プロジェクト」です。NearMeは相乗りマッチングや車両割り当ての制御を行うプラットフォームの開発に焦点を当てており、車両やドライバーのマネジメントや実際の運行は他社のハイヤー会社(以下、運行会社と呼ぶ)に委託しています。なのでドライバーのシフト
フロントエンドパフォーマンスのチェックリスト2021年版(PDF、Apple Pages、MS Word)-中編 目次# 前編 準備段階:計画と指標 パフォーマンスを重視する文化、Core Web Vitals、パフォーマンスのプロファイル、CrUX、Lighthouse、FID、TTI、CLS、端末。 現実的な目標の設定 パフォーマンスバジェット、パフォーマンス目標、RAILフレームワーク、170KB/30KBバジェット。 環境の定義 フレームワークの選択、パフォーマンスコストの基準設定、Webpack、依存関係、CDN、フロントエンドアーキテクチャ、CSR、SSR、CSR + SSR、静的レンダリング、プリレンダリング、PRPLパターン。 中編 アセットの最適化 Brotli、AVIF、WebP、レスポンシブ画像、AV1、アダプティブメディア読み込み、動画圧縮、Webフォント、Goog
React では、useMemoやReact.memoなどが最適化の手段として知られています。 これらは最適化であるため、必要が無いのにuseMemoを使うことは無駄な最適化であるとして避けられる傾向にあります。 筆者が簡単なベンチマークを取ってみたところ、あるコンポーネントが一つ余計なuseMemoを持っているよりも、一つ余計な<div>をレンダリングする方が、パフォーマンス(レンダリングにかかる時間)をより悪化させることが分かりました。 したがって、useMemoなどを減らすことに執心する場合は、それと同等以上の熱量で余計な要素を減らすことに執心する必要があります。 ベンチマークはこちらです。 結果には当然ばらつきがありますが、筆者の環境では次のような結果が典型的なものとして現れました(Mac 上の Google Chrome・Firefox・Safari で同じような傾向)。 bas
今回は graphql-codegen を使い説明します。今回の例は、graphql-codegen 以外でも発生する可能性がありますが自動生成系が一番顕著に影響がわかりやすいです。 graphql-codegen はよく、graphql のスキーマから typescript の型定義/react の hooks 等を自動生成するのに使われますが、これは next.js と組み合わせた場合、少しトリッキーな部分があります。
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く