履歷範例

機器學習工程師的英文履歷怎麼寫

更新於 2026-09-02

暗房裡的伺服器機架,線材與面板在綠光下

機器學習工程師的英文履歷,比的是模型離開 notebook 之後的數字:p99 延遲、每千次預測的成本、模型變差時誰先知道。離線準確率本身是資料科學家的證據,不是你的。看履歷的人在找三件事:你的模型接過多大的流量、訓練一次燒掉多少 GPU 時數、哪一次迴歸是你的評估比使用者先抓到的。

這也是你和兩個鄰居在紙上的分界。軟體工程師的 bullet 主詞是服務與負載;資料科學家的 bullet 結尾是一個被改變的決策;你的 bullet 從一個模型開始,結束在延遲、成本或監控。「Trained a churn model with XGBoost」三樣都沒有。範例全是英文,因為成品是英文;數字全留 [N],因為那些數字要由你在面試裡守住,不是由這一頁替你編。

下面照這個順序走:能被解析的區塊順序、三種年資的 summary、按六種能力分組的 bullet、弱句與強句的對照、技能區的去留、ATS 會比對的詞、這個職位特有的錯誤,以及每句主張會被追問的地方。

這個職位的英文履歷,完成後長這樣

下面是一份虛構人物的完整範例,由產品的排版引擎渲染成真正的頁面,分數由同一套規則引擎現算——不是我們打上去的。缺的數字一律留 [N],所以分數停在上限以下;那不是範例的缺陷,是產品的規則在示範。

Noa Shapira

Machine Learning Engineer · Model Serving & Training Infrastructure
noa-shapira@example.comTel Aviv, Israellinkedin.com/in/noa-shapiragithub.com/noa-shapira

Education

Technion – Israel Institute of Technology
B.Sc., Computer Science
Oct 2014 – Jul 2018
  • Engineered a keyword-spotting model for the final-year project, quantized to int8 to run under [N] ms on a microcontroller
  • Led the machine-learning reading group, where [N] students reimplemented one paper a month and presented the failed runs beside the working ones

Experience

Speech-recognition startup (Series B)
Tel Aviv
Senior Machine Learning Engineer
Mar 2021 – Present
  • Cut p99 transcription latency from [N] ms to [N] ms with continuous batching and an int8 encoder, at [N]% of the previous cost per audio hour
  • Deployed a LoRA fine-tune for transcript summaries behind vLLM, matching the hosted API on a human-rated eval at [N]% of its per-token cost
  • Built the release-gating eval harness over [N] accent and noise slices, catching a [N]-point word-error regression before the canary reached customers
E-commerce search platform
Haifa
Machine Learning Engineer
Aug 2018 – Feb 2021
  • Shipped the learning-to-rank model behind product search, serving [N] million queries a day at a p99 under [N] ms from CPU-only replicas
  • Halved the GPU bill for the nightly ranking retrain by fixing the data-loader stalls the profiler exposed, at the same offline NDCG
  • Automated the path from checkpoint to canary through a model registry and shadow-traffic replay, cutting time-to-production from [N] days to [N] hours
University speech-processing research lab
Haifa
Research Assistant, Machine Learning (part-time)
Aug 2016 – Jul 2018
  • Developed the lab’s acoustic-model training pipeline into one reproducible job that [N] graduate students ran without a maintainer
  • Standardized a [N] thousand-hour speech corpus into sharded, speaker-disjoint splits, ending the leakage that had flattered [N] earlier experiments
  • Reduced queue time on the shared GPU cluster from [N] days to [N] hours with fair-share scheduling and reclaiming of stalled jobs

Projects

drift-audit
github.com/example/drift-audit
Author · Python, PyTorch, Prometheus
2022
  • Created an open-source input-drift monitor for audio and text models, downloaded [N] thousand times a month and running in production at [N] companies

Additional Information

Training & models: PyTorch, Hugging Face Transformers, PEFT / LoRA, DDP / FSDP, mixed precision
Serving & infrastructure: vLLM, Triton Inference Server, ONNX Runtime, Kubernetes, Ray, MLflow, Prometheus
Languages: Python, C++, SQL, Go
Languages: Hebrew (native) · English (fluent) · Russian (conversational)

版面結構與順序

單欄、標準標題、不貼系統架構圖、不貼 GPU 使用率截圖。這個職位最常見的版面錯誤是把架構圖放進履歷。解析器讀到一片空白;人讀到的是一張用來代替文字證據的圖。

順序只有一個原則:上線的證據先出現。模型跑在誰的流量上、延遲多少、每個月花多少錢,這些住在 Experience。論文、Kaggle、課程證書全部排在它後面。

  1. 1
    Summary

    三句話:年資與模型類型、你負責的範圍(訓練、服務、監控哪幾段)、一個來自 production 的數字。看的人在這裡判斷你是在 notebook 裡工作,還是在流量上工作。

  2. 2
    Experience

    倒序。每段三到五條 bullet:動詞開頭、有模型、有流量或資料量、有延遲或成本、有你怎麼知道它有效。這區占整頁六成以上。

  3. 3
    Projects(選用)

    只放跑在別人流量上的東西:有使用者的開源服務工具、有公開評估的微調模型。Kaggle notebook 與課程作業在這裡不算專案。

  4. 4
    Skills

    按層分組:訓練、服務、基礎設施、評估。列你 profile 過的框架,不列 import 過的。

  5. 5
    Publications(選用)

    只放有審查或有引用的,一行一篇,排在 Experience 之後。沒有博士學位的人,workshop 論文不必占版面。

  6. 6
    Education

    三年經歷以上放最後、一到兩行。ML 相關的碩博士可以多一行寫論文題目與方法。

三個層級的 Summary 範例

這段預告的是你在 production 裡的位置。三個層級各一例,數字留 [N] 由你自己填。

新鮮人

Machine learning engineer with internship and thesis experience taking models from notebook to service. Packaged a text-classification model as a batched inference API serving [N] requests per minute with a p99 under [N] ms, and wrote the regression eval the team runs on every retrain. Looking for a team where the model’s production metrics are the engineer’s responsibility.

新鮮人的證據是一個真的在接流量的 endpoint,加上一套別人還在跑的評估。兩者都經得起追問。

轉職或中生代

Machine learning engineer with [N] years owning training pipelines and serving infrastructure for ranking and recommendation models handling [N] million predictions a day. Cut inference cost per thousand predictions by [N]% through quantization and dynamic batching, and built the offline-to-online eval harness that catches regressions before the canary does. Prefers a boring model with a monitored pipeline over a clever one nobody can retrain.

中生代的關鍵字是 owning:從管線到 endpoint、到中間那條成本線都算你的。最後一句是一個明說的偏好,偏好比形容詞更能讓看的人知道你怎麼做事。

資深

Senior machine learning engineer who set platform direction for a [N]-person ML team: one feature store, one model registry, and a deployment path that took a fine-tuned LLM from checkpoint to a [N] ms p99 endpoint. Reduced GPU spend by [$N] a year while models in production grew from [N] to [N]. Measures the team by how many retrains happen without a human watching.

資深的證據是平台層的決定與被退場的混亂:一個 feature store、一個 registry、一條到 production 的路。最後一句說的是他怎麼衡量團隊,這比「led a team」有資訊量。

依職能分組的 bullet 範例

機器學習工程師被評價的是這六件事。每條的骨架相同:動詞、模型與流量、方法、[N] 結果,以及你怎麼知道它有效。

推論服務與延遲

· Cut p99 latency of the ranking endpoint from [N] ms to [N] ms by replacing per-request inference with dynamic batching and pinning the model in GPU memory across [N] replicas.

· Deployed a distilled [N]-million-parameter student model that matched the teacher within [N] points on the offline eval at one third of the serving cost per thousand predictions.

· Scaled the recommendation endpoint to [N] million predictions a day, holding availability at [N]% through two traffic spikes without a rollback.

訓練管線與 GPU 成本

· Halved wall-clock time of the daily retrain by moving the data loader to pre-tokenized shards and enabling mixed precision, cutting the GPU bill by [$N] a month at unchanged offline accuracy.

· Rebuilt the retraining pipeline as an idempotent DAG with checkpoint resumption, so a preempted spot instance costs [N] minutes of progress instead of a full run.

· Doubled GPU utilisation on the shared training cluster by profiling the [N] heaviest jobs and fixing the input-pipeline stalls that left accelerators idle.

評估與上線門檻

· Built the offline evaluation harness that gates every release on [N] slice-level metrics, catching a [N]-point regression on low-resource languages before the canary reached users.

· Established a shadow-deployment stage that replays [N]% of production traffic against each candidate model, turning a two-week manual sign-off into a same-day decision.

· Designed the golden-set review for the LLM assistant: [N] labelled conversations refreshed monthly, so the eval could not drift away from what users actually asked.

監控與漂移

· Instrumented feature-level drift monitoring across [N] production models, paging on distribution shift so a broken upstream join was caught in [N] hours instead of at the quarterly review.

· Cut silent model-degradation incidents from [N] to [N] per quarter by alerting on prediction-distribution shift and calibration error rather than infrastructure metrics alone.

特徵與訓練資料

· Migrated [N] models onto a shared feature store with point-in-time joins, eliminating the training-serving skew that had inflated offline accuracy by [N] points.

· Unified online and offline feature computation for the fraud model behind one code path, retiring [N] hand-maintained SQL duplicates and the drift between them.

LLM 微調與部署

· Delivered a LoRA fine-tune of a [N]-billion-parameter open-weight model on [N] thousand labelled support tickets, beating the hosted API on the internal eval at [N]% of its per-token cost.

· Deployed the fine-tuned model behind a vLLM server with continuous batching and prefix caching, holding a p99 under [N] seconds at [N] concurrent requests on [N] GPUs.

改寫前後對照

同一段經歷,弱句與強句並排。每組的 why 比改寫本身更值得記住:那是你自己的履歷裡最可能出現的缺陷。

原句

Developed machine learning models using Python and TensorFlow.

改寫

Shipped a churn-propensity model from training pipeline to a nightly batch-scoring job over [N] million accounts, with a drift alert that has fired [N] times and been right each time.

差在哪 · 原句只有材料,沒有 production。改寫有資料量([N] million accounts)、有排程(nightly)、有一個被現實測過的監控。

原句

Improved model accuracy.

改寫

Increased recall on the fraud model’s high-value slice from [N]% to [N]% at fixed precision by closing a point-in-time leak in the training set, verified on a held-out month.

差在哪 · 準確率是哪個指標、哪個 slice、precision 付了什麼代價?改寫給出指標對、slice、原因、驗證方式。每一項都可以被追問。

原句

Deployed models to production.

改寫

Deployed [N] models behind a Triton server with dynamic batching and canary rollouts, cutting the median time from trained checkpoint to serving traffic from [N] days to [N] hours.

差在哪 · Deploy 是每個人都做過的動詞。改寫給出服務堆疊、上線的安全機制,還有 ML 平台團隊被評價的那個數字:checkpoint 到接流量的時間。

原句

Worked on the LLM chatbot project.

改寫

Owned retrieval and serving for the support assistant: built the embedding pipeline over [N] thousand documents, cut p99 response time to [N] seconds with prompt caching, and wrote the eval set the team still ships against.

差在哪 · 「Worked on」證明你在場,「project」藏起你做的那一段。改寫指名你的段落(retrieval 與 serving)、三個產出物、一套比專案活得久的 eval。

原句

Optimized training performance.

改寫

Cut the weekly retrain from [N] hours to [N] hours on the same [N] GPUs by profiling the input pipeline, moving augmentation onto the accelerator, and enabling mixed precision.

差在哪 · 「Optimized」沒有前後值、沒有硬體,只是一種心情。改寫把硬體固定住,所以省下的時間是你的,不是更大叢集的。

技能區怎麼取捨

原則只有一條:敢被問到 internals 的才留。這個職位的技能區按層分:訓練、服務、基礎設施、評估。「Deep Learning」不是技能,是職稱。

值得佔版面的

訓練與模型(近兩年 profile 過的)

PyTorch · Hugging Face Transformers · PEFT / LoRA · DDP / FSDP · mixed precision

推論與服務

vLLM · Triton Inference Server · ONNX Runtime · TensorRT · quantization · dynamic batching

管線與基礎設施

Kubernetes · Ray · Airflow / Kubeflow · Feast · MLflow · Terraform

評估與監控

offline eval harness · shadow deployment · A/B testing · drift detection · Prometheus / Grafana

可以刪掉的

  • 「Machine Learning」「Deep Learning」「AI」 · 那是職稱,不是技能。一條寫著 p99 的 bullet 比這三個詞加起來有力。
  • 每一個 import 過的框架(Keras、Caffe、Theano、MXNet⋯) · 面試官會挑你最生疏的追問。留下你 profile 過、調過 batch size 的,其餘刪掉。
  • Kaggle 名次與線上課程證書(三年經歷以上) · 有一個模型在 production 之後,證書就是整頁最弱的一行。新鮮人可以留一行。
  • 「Prompt engineering」單獨列成技能 · 撐不起一個欄位。把證明 prompt 有效的那套評估寫進 bullet,才是證據。

ATS 關鍵字

解析器先比對詞,再輪到人讀句子。下面是這個職位的職缺裡反覆出現的詞,按類別分。

職能核心
machine learning engineeringmodel servinginference optimizationtraining pipelineMLOps
框架與平台
PyTorchKubernetesRayMLflowvLLMTriton
方法
quantizationdistillationfine-tuningLoRAfeature storedistributed training
成果語言
p99 latencyGPU utilizationcost per predictionmodel driftevaluation harness
協作訊號
model reviewA/B testingon-calldata contractscross-functional

只放你的經歷撐得起的詞。寫了 distributed training,卻答不出 FSDP 切的是什麼,比不寫更傷。堆關鍵字在解析器那裡沒有加分,在後面讀的人那裡是扣分。

履歷以外的證據:repo、endpoint 與模型卡

這一頁上的每個主張,都會被拿去對照一個履歷以外的東西。機器學習工程師的那個東西通常不是論文,是一個還在回應的 endpoint,和它背後那個 repo。下面是看的人真的會打開的順序、履歷上指向它的那一行,以及沒有東西值得打開時該怎麼辦。

  • 他先點 header 的 GitHub,看的是置頂那排

    讀到 summary 第三句之前,那個連結就被點掉了。落地頁上只有兩件事會進到腦子裡:置頂那排 repo 的標題,以及最新一次 commit 的日期。貢獻圖是掃過去的,沒有人在數格子。這個職位的置頂位置要留給會跑的東西:一個有 Dockerfile 和啟動指令的服務 repo、一條一行指令就能從原始資料跑到 checkpoint 的訓練管線、一套會擋下迴歸的 eval。整排都是 .ipynb 的 profile,等於替你回答了一個你不想被問的問題:你是資料科學家。

  • README 第一屏要有硬體、一行指令、一個延遲數字

    打開 repo 的人給你的時間不到一分鐘,而且不會捲到第二屏。第一屏放三樣:一行可以直接貼進終端機的 docker run、量測時用的那張卡與 batch size、以及一個寫成 p99 [N] ms at [N] concurrent requests 的結果。沒有標硬體的 benchmark 不算 benchmark,因為讀的人沒辦法判斷那個數字是好是壞。模型品質用一張小表交代:資料集、切法、指標,以及對照的 baseline 是誰。

  • 一個還活著的 endpoint,以及履歷上指向它的那一行

    會跑的 demo 比任何一條 bullet 更快結束爭論。Hugging Face 上的 Space 可以,自己掛的一個小 endpoint 也可以。履歷 header 那一行照這個寫:Demo: <url> · Code: github.com/<handle>/<repo> — <model> served behind vLLM on one GPU, p99 [N] ms at [N] concurrent requests。送出履歷那天早上自己點一次。睡著的 Space、過期的網域、回 502 的 endpoint,都比沒有 demo 更傷,因為那是一次看的人親手驗證過的失敗。

  • 可以被查的東西,和只能被相信的東西

    Hugging Face 上的模型頁有下載數和一張模型卡,PyPI 套件有下載數,一個被合併的 PR 有網址和 commit。這些都不需要你的保證。「Optimized inference」則完全靠你的保證。雲端證照屬於前者:AWS Certified Machine Learning 和 Google Cloud Professional Machine Learning Engineer 發下來時都附一個誰都能開的驗證連結,所以證照那一行要寫發證單位、取得年份與到期日。已經過期就寫成 held <年>–<年>,或整行刪掉。一條沒寫日期、而登錄資料顯示已失效的證照,是整頁唯一會被真的去查、而且查出來對不上的地方。

  • 不能公開的那一段:私有 repo 的連結比沒有連結更糟

    你在公司做的那套服務堆疊沒有公開網址。不要貼內部 URL,也不要貼一個會讓對方看到 404 的私有 repo——那一次點擊只留下一個壞掉的印象。改成用文字把形狀講清楚:模型家族、流量量級留 [N]、服務堆疊照名字寫(Triton、vLLM、Ray Serve),最後加一句 production code is under NDA。想在旁邊放一個打得開的東西,就用開放權重模型和公開資料集把同一個問題重做一次小的——一樣的 batching 與量化取捨——並且標明這是重做的複本,不是公司那一套。公司的資料集和客戶名稱,永遠不搬進公開 repo。

  • 什麼時候整個連結都不要放

    如果你的 GitHub 只有幾個 fork 來的教學 repo、最後一次 commit 停在兩年前、置頂的是沒寫完的課程作業,就把連結從 header 拿掉。看的人只計算他點開過的連結;不放不扣分,放了空的會扣。要補這個空窗,一個週末就夠:把你在工作上怎麼建那套 eval harness 寫成一篇公開的說明,或替一個內部模型補一張模型卡、數字全留 [N]。兩件事都在證明同一件事——你知道模型上線前該看什麼。競賽名次填不了這一格,因為讀履歷的人在找一個會跑的東西。

機器學習工程師履歷的常見錯誤

  1. 1
    讀起來像資料科學家

    Bullet 停在 notebook 裡的 F1。這個職位的 bullet 要走到模型接流量的那一刻:延遲多少、每千次預測花多少、誰在監控。建模成果縮成一行,後面接它上線後的後果。

  2. 2
    寫框架名稱,不寫服務路徑

    「PyTorch, TensorFlow, scikit-learn」講不出 batch size、硬體、p99。看的人只知道你會 import,不知道你能不能讓它在流量底下活著。

  3. 3
    把平台的吞吐量寫成自己的

    「Our platform serves [N] billion predictions」的功勞屬於平台。寫你那一段:哪幾個模型、哪條 endpoint、哪個 SLA 是你在守。面試時範圍一縮,其他 bullet 也跟著被重新估價。

  4. 4
    只有準確率,沒有代價

    在這個職位,一個準一點、但服務成本高三倍的模型是退步。每一條準確率主張旁邊都要有它的延遲與成本,否則看的人會替你假設最壞的那個版本。

  5. 5
    整頁沒有評估的故事

    看不到 eval harness、shadow deployment、任何一次被擋下的迴歸,讀起來像模型是憑信心上線的。這個職位的可靠性證據,就是那一次你比使用者先發現的事。

  6. 6
    LLM 熱詞沒有產出物

    「RAG、agents、prompt engineering」後面沒有評估、延遲、成本,就是一張閱讀清單。有區別度的那一行,是你的微調模型贏了誰、每百萬 token 花多少。

每句主張會招來的追問

延遲、成本與評估的主張都會被往下鑽三層。寫之前先想:被問到量測點與代價時,你手上有沒有東西。

履歷上的句子

Cut p99 inference latency from [N] ms to [N] ms.

面試官會追問

p99 在哪裡量:模型伺服器內、gateway,還是客戶端?同一段期間吞吐量與每次預測的成本怎麼變?batch size 有沒有動?

你要拿得出來的

講得出量測點、負載條件與代價。用縮小 batch 換來的延遲會推高單位成本,這件事自己先講。

履歷上的句子

Reduced GPU training cost by [$N] a month.

面試官會追問

省在哪一個槓桿:使用率、spot instance、mixed precision,還是少跑幾次?模型品質有沒有動?帳單怎麼驗證?

你要拿得出來的

帶雲端帳單的前後對照,不是估算。主動說你交換掉的東西:更長的訓練時間、一點點品質差距。

履歷上的句子

Built the evaluation harness that gates every release.

面試官會追問

它真的擋下過什麼?誤擋率多高?趕 deadline 的時候有沒有人繞過它?

你要拿得出來的

最好的答案是一次被擋下的具體迴歸:哪個 slice、掉了幾點。被繞過的那一次也要準備好,講清楚之後改了什麼。

履歷上的句子

Delivered a LoRA fine-tune that beat the hosted API on the internal eval.

面試官會追問

贏在哪一套 eval?誰建的、幾筆、人評還是模型評?自己部署的每百萬 token 成本,對上 API 是多少?

你要拿得出來的

知道那套 eval 的建構方式與弱點。只有模型評分、沒有人工抽查的勝利,自己先降級,別等面試官來降。

履歷上的句子

Deployed [N] models to production.

面試官會追問

現在還有幾個在跑?漂移時誰接 on-call?retrain 怎麼進 production、誰把關?

你要拿得出來的

準備的是生命週期,不只是上線那一天。退役了哪些模型、為什麼退役,比上線的數量更有說服力。

常見問題

我是資料科學家,想轉機器學習工程師,履歷要怎麼調整?

把每條 bullet 的結尾換掉。資料科學家的 bullet 結束在一個決策;機器學習工程師的結束在一個服務:接流量的 endpoint、有 SLA 的訓練管線、擋住迴歸的評估。把部署、管線、監控的段落往前放,建模成果縮成一行,並接上它上線後發生的事。

誠實分層。真的沒有上線經驗,就做一個把模型放在 API 後面、有負載測試延遲數字的專案,並照實寫成自己的專案。

我只在單張 GPU 或雲端 notebook 上訓練過,沒碰過叢集,會不會太薄?

規模是相對的,看的人讀的是你有沒有量測:那一張卡的使用率、每秒 token 數、一次訓練的成本。能把一張 GPU profile 清楚的履歷,比提到一個從沒碰過的叢集有力。

分層寫法:單卡上過 production,分散式讀到設計層(DDP 與 FSDP 的取捨)但還沒出貨。這樣在面試裡守得住。

Kaggle、論文、開源貢獻要放嗎?

Kaggle 只在新鮮人階段放,一行、附名次。論文只放有審查或有引用的,一行一篇,排在 Experience 之後。開源在有你以外的使用者時放,寫法跟工作 bullet 一樣:採用數留 [N]。

職缺寫 LLM/GenAI,我只做過傳統 ML,能投嗎?

服務端的問題是一樣的:batching、延遲、成本、評估、漂移。先把這些可轉移的 bullet 寫在前面。然後誠實分層:微調讀到設計層(LoRA、量化的取捨),還沒出貨。不要在沒有產出物的情況下補「RAG」這種關鍵字。

MLOps 職缺和 ML engineer 職缺,要準備兩份履歷嗎?

一份履歷,兩種順序。MLOps 職缺先看管線、監控、部署自動化那幾組 bullet,把它們排到每段經歷的最前面;ML engineer 職缺先看模型與服務的數字,順序倒過來。內容不動,只動順序。技能區照同一個原則排。

把你上線過的模型,寫成有延遲、有成本、有監控的英文

用中文照實寫你服務過的流量、訓練花掉的 GPU 時數、擋下過的迴歸,AI 以 Tech 視角改寫成這一頁等級的英文 bullet。四項分數由規則引擎計算,不是由寫稿的模型自評,同一份稿重測數字不變。輸入裡沒有的數字留黃色 [N] 空格由你自己填:面試裡要守住那個數字的人是你。

免費生成 2 次

接著讀

同一個產業的其他職位履歷:科技