卡片 04岗位

职位名称里,推理出现的次数是预训练的八倍

2026 年 9 月 21 日 Metix AI Platform 上,标题写明模型生命周期某个阶段的在招岗位,全球与美国。

8.2×

标题写推理的在招岗位是写预训练的 8.2 倍(516 比 63)。

  • 推理与部署516
  • 后训练175
  • 预训练63
  • 微调47

推理岗位多过其他所有阶段,是预训练的 8.2 倍

标题写明模型生命周期某个阶段的在招岗位:轮廓是全球总数,实心部分是其中在美国的岗位

推理 516,后训练 175,预训练 63,微调 47。

  1. 推理与部署516 · 美国 65%
  2. 后训练175 · 美国 79%
  3. 预训练63 · 美国 56%
  4. 微调47 · 美国 66%

图中所见

全球标题写明推理或模型部署的在招岗位有 516 个,是预训练(63 个)的 8.2 倍。后训练有 175 个,微调 47 个。按标题看,招人的重心在把模型跑起来,而不是把模型训出来。

各阶段在美国的比例不同。后训练最集中,138 个在美国,占 79%;预训练只有 56%。

方法与局限

这些数字只看标题。前沿实验室的很多人挂的是 "Member of Technical Staff" 这类通用头衔,不会被算进来,所以每一项都是下限,比较的是招聘标题怎么写,不是团队规模。

来源:Metix AI Platform 岗位数据,2026-09-21。

查询pre-training.json · post-training.json · fine-tuning.json · inference.json
POST /v1/jobs/query · queries/pre-training.json
{  "where": {    "all": [      {        "any": [          {            "field": "title",            "match": "pretraining"          },          {            "field": "title",            "match": "pre-training"          }        ]      },      {        "any": [          {            "field": "title",            "match": "research"          },          {            "field": "title",            "match": "engineer"          },          {            "field": "title",            "match": "scientist"          },          {            "field": "title",            "match": "llm"          },          {            "field": "title",            "match": "model"          },          {            "field": "title",            "match": "ai"          },          {            "field": "title",            "match": "ml"          },          {            "field": "title",            "match": "technical"          }        ]      },      {        "not": [          {            "field": "title",            "match": "sales"          },          {            "field": "title",            "match": "customer"          },          {            "field": "title",            "match": "teacher"          },          {            "field": "title",            "match": "trainer"          },          {            "field": "title",            "match": "doctoral"          },          {            "field": "title",            "match": "pharmacy"          },          {            "field": "title",            "match": "licensing"          },          {            "field": "title",            "match": "licensed"          },          {            "field": "title",            "match": "causal"          },          {            "field": "title",            "match": "statistical"          }        ]      }    ]  },  "size": 1}
POST /v1/jobs/query · queries/post-training.json
{  "where": {    "all": [      {        "any": [          {            "field": "title",            "match": "post-training"          },          {            "field": "title",            "match": "posttraining"          }        ]      },      {        "any": [          {            "field": "title",            "match": "research"          },          {            "field": "title",            "match": "engineer"          },          {            "field": "title",            "match": "scientist"          },          {            "field": "title",            "match": "llm"          },          {            "field": "title",            "match": "model"          },          {            "field": "title",            "match": "ai"          },          {            "field": "title",            "match": "ml"          },          {            "field": "title",            "match": "technical"          }        ]      },      {        "not": [          {            "field": "title",            "match": "sales"          },          {            "field": "title",            "match": "customer"          },          {            "field": "title",            "match": "teacher"          },          {            "field": "title",            "match": "trainer"          },          {            "field": "title",            "match": "doctoral"          },          {            "field": "title",            "match": "pharmacy"          },          {            "field": "title",            "match": "licensing"          },          {            "field": "title",            "match": "licensed"          },          {            "field": "title",            "match": "causal"          },          {            "field": "title",            "match": "statistical"          }        ]      }    ]  },  "size": 1}
POST /v1/jobs/query · queries/fine-tuning.json
{  "where": {    "all": [      {        "any": [          {            "field": "title",            "match": "fine-tuning"          },          {            "field": "title",            "match": "finetuning"          }        ]      },      {        "any": [          {            "field": "title",            "match": "research"          },          {            "field": "title",            "match": "engineer"          },          {            "field": "title",            "match": "scientist"          },          {            "field": "title",            "match": "llm"          },          {            "field": "title",            "match": "model"          },          {            "field": "title",            "match": "ai"          },          {            "field": "title",            "match": "ml"          },          {            "field": "title",            "match": "technical"          }        ]      },      {        "not": [          {            "field": "title",            "match": "sales"          },          {            "field": "title",            "match": "customer"          },          {            "field": "title",            "match": "teacher"          },          {            "field": "title",            "match": "trainer"          },          {            "field": "title",            "match": "doctoral"          },          {            "field": "title",            "match": "pharmacy"          },          {            "field": "title",            "match": "licensing"          },          {            "field": "title",            "match": "licensed"          },          {            "field": "title",            "match": "causal"          },          {            "field": "title",            "match": "statistical"          }        ]      }    ]  },  "size": 1}
POST /v1/jobs/query · queries/inference.json
{  "where": {    "all": [      {        "any": [          {            "field": "title",            "match": "inference"          },          {            "field": "title",            "match": "model serving"          },          {            "field": "title",            "match": "llm serving"          }        ]      },      {        "any": [          {            "field": "title",            "match": "research"          },          {            "field": "title",            "match": "engineer"          },          {            "field": "title",            "match": "scientist"          },          {            "field": "title",            "match": "llm"          },          {            "field": "title",            "match": "model"          },          {            "field": "title",            "match": "ai"          },          {            "field": "title",            "match": "ml"          },          {            "field": "title",            "match": "technical"          }        ]      },      {        "not": [          {            "field": "title",            "match": "sales"          },          {            "field": "title",            "match": "customer"          },          {            "field": "title",            "match": "teacher"          },          {            "field": "title",            "match": "trainer"          },          {            "field": "title",            "match": "doctoral"          },          {            "field": "title",            "match": "pharmacy"          },          {            "field": "title",            "match": "licensing"          },          {            "field": "title",            "match": "licensed"          },          {            "field": "title",            "match": "causal"          },          {            "field": "title",            "match": "statistical"          }        ]      }    ]  },  "size": 1}

运行这个案例

三种方式,每一种都先告诉你要花多少。

1 API Credit 可以买 25 个搜索结果或 5 条完整记录;1 美元可以买 30 API Credits。

交给你的 agent 来跑

56 到 64 API Credits1.87 到 2.13 美元新账户赠送的 100 API Credits 够用

花费超过 70 API Credits 之前,agent 会先停下来问你。

你的 agent 按提示词一步步执行:先读规则,再计数,按提示词的要求检查定义,最后写出文件和图表。请使用能写文件的 agent,比如 Claude Code 或 Codex。

一次性配置key、连接和一次免费检查。如果你的 agent 已经接入 Metix AI Platform,可以跳过。
  1. 1获取 key

    在 Metix AI Platform 上创建 key →

    新账户一次性赠送 100 API Credits,30 天内有效。在启动 agent 的终端里设置,或者把这一行写进 ~/.zshrc 或 ~/.bashrc,新开的终端也能用:

    终端
    export METIX_KEY=metix_xxxxxxxx
  2. 2连接你的 agent

    Claude Code

    为所有项目注册 Metix AI Platform。在任意目录启动 claude,就能看到十个 metix 工具。

    终端
    : "${METIX_KEY:?run step 1 first}" &&
    claude mcp add --scope user --transport http metix \
      https://mira-api.metix.ai/mcp \
      --header "Authorization: Bearer $METIX_KEY"
    MCP 配置指南 →

    Codex

    注册同一个服务。key 留在环境变量里,不写进配置文件。

    终端
    codex mcp add metix \
      --url https://mira-api.metix.ai/mcp \
      --bearer-token-env-var METIX_KEY
    MCP 配置指南 →

    Skills

    四个 skill,教任何 agent 使用 Metix AI Platform 的接口和查询规则,适合不支持 MCP 的 agent。安装程序默认一项都不勾选:在每一项上按空格,再按回车。

    终端
    npx skills add MetixAI-Official/metix-skills
    Skills 安装说明 →

    其他 MCP

    让客户端通过 streamable HTTP 连接这个地址,并带上这两个请求头;缺少 Accept 请求头时服务器会返回 406。较旧的客户端使用同一主机上的 /sse。

    地址和请求头
    https://mira-api.metix.ai/mcp
    Authorization: Bearer <your key>
    Accept: application/json, text/event-stream
    MCP 配置指南 →
  3. 3检查配置

    先问这一句。它只读取余额和字段列表,不做任何搜索,不花 API Credits:

    发给 agent 的提示
    使用 Metix AI Platform:查询我的 key 状态并读取 contract,这两项都免费。然后告诉我我的 API Credit 余额和可以查询哪些数据集。不要做任何搜索。

4粘贴提示词

在一个空文件夹里启动 agent,再粘贴。它会把文件写在那里。

要回答的问题

用 Metix AI Platform 回答一个问题:招聘标题里最常出现模型生命周期的哪个阶段,每个阶段在哪里招人?只通过公开的 Platform 访问(REST 地址 https://mira-api.metix.ai、MCP 服务或 metix-skills),密钥从 METIX_KEY 读取,任何时候都不要打印密钥。

  1. 01先读规则再查询

    调用 GET /contract(免费),只用 querySpecByEntity.job 里的字段。搜索按 ceil(返回的 ID 数 / 25) 计费,所以 size 1 的计数花 1 API Credit,没有结果的搜索不收费。开始和结束时各调用一次 GET /auth/key/status(免费)查余额,总花费超过 70 API Credits 之前先停下来问我。

  2. 02阶段

    四组标题条件:预训练(pretraining、pre-training)、后训练(post-training、posttraining)、微调(fine-tuning、finetuning)、推理(inference、model serving、llm serving)。每个阶段用一个 any 节点。

  3. 03每个阶段用同一套防误判条件

    match 要求每个词都出现,但不要求连在一起,所以 "pre-training" 也会命中 "Pre-licensed Training Provided"。要求标题里有一个机器学习相关的词(research、engineer、scientist、llm、model、ai、ml、technical),并排除 sales、customer、teacher、trainer、doctoral、pharmacy、licensing、licensed、causal、statistical。后训练不要加 "RLHF",人力公司反复发布的数据标注岗位会把它淹没。

  4. 04先抽检再相信

    最小的阶段(不到 100 个)把标题全部读一遍,其他阶段各读 50 个。报告有多少是无关的;超过 5% 就补充排除词,四个阶段一起改,并说明改了什么。

  5. 05计数

    每个阶段算全球和 location.country eq "United States" 两次,size 1,一共 8 API Credits。

  6. 06清洗

    这里不合并重复发布,直接说明,不要猜一个修正值。

  7. 07分组

    四个阶段就是四组,连同条件写在一个文件里。

  8. 08输出

    写出 data/stages.json,带 "unit": "jobs" 和快照日期,每个阶段写全球数和美国数。运行前后各调用一次 GET /auth/key/status(免费),余额差就是花费。

  9. 09图表

    每个阶段一根条形,按最大的那根缩放,推理高亮,每根标出数量和美国占比。大数字用推理和预训练的比值,不用某个计数。

  10. 10局限

    只看标题:前沿实验室的很多人挂的是 "Member of Technical Staff" 这类通用头衔,所以每个数都是下限,比较的是招聘标题怎么写,不是团队规模。

查看 PROMPT.md →

你会得到

聚合文件和图表,一段说明抽检发现了什么、改了什么,以及这次运行花了多少 API Credits(取自运行前后的余额)。

如果调用返回 402 insufficient_quota,说明 key 有效,只是余额用完了。

复现数字

8 API Credits0.27 美元新账户赠送的 100 API Credits 够用

一个只用 Python 标准库的小脚本,把已提交的查询按计数发出去,写出这个页面所用的聚合文件。需要 Python,并在终端里设置好 METIX_KEY(见 agent 路径的第 1 步),也可以让你的 agent 替你运行这几行。

终端
curl -fsSL https://platform.metix.ai/casebook/source/model-lifecycle-titles-2026.tar.gz | tar xz
cd model-lifecycle-titles-2026
: "${METIX_KEY:?set METIX_KEY first}" && python3 cases/model-lifecycle-titles-2026/fetch.py

你会得到

data/*.json 和 data/receipt.json。运行 git diff cases/model-lifecycle-titles-2026/data 看哪些数字变了:除去快照之后数据本身的变化,数字应该一致。

改成你的问题

花费取决于你的版本读取多少。在提示词第 1 步里写上你自己的上限。

提示词就是这个案例本身。改掉下表里的部分,你的 agent 就会回答你的问题,用同样的检查和同样的花费记录方式。

想改的 改哪里 例子
阶段 第 2 步 加上评测("evals"、"model evaluation"),用同样的方法抽检
防误判条件 第 3 步 某个阶段噪音大时,收紧机器学习相关的词
地理范围 第 5 步 按几个国家分别计数,而不只是美国

运行前先问清楚

  1. 看哪些阶段,每个阶段用标题里的哪些词?
  2. 只看标题,还是也看职位描述?描述的噪音大得多。
  3. 看全球,还是某一个国家?
  4. 抽检读标题最多能花多少 API Credits?
查看 PROMPT.md →

方法与局限

统计范围怎么定义、怎么计数和抽检,以及这些数字不能说明什么。

统计范围

2026 年 9 月 21 日 Metix AI Platform 上的在招岗位。每个阶段是一组标题关键词:预训练(pretraining、pre-training)、后训练(post-training、posttraining)、微调(fine-tuning、finetuning)、推理(inference、model serving、llm serving)。每一组还要求标题里有一个机器学习相关的词(research、engineer、scientist、llm、model、ai、ml、technical),并排除 sales、customer、teacher、trainer、doctoral、pharmacy、licensing、licensed、causal、statistical。

为什么要加这些条件

关键词匹配要求每个词都出现,但不要求连在一起,所以 "Pre-licensed Training Provided"(房产销售)和 "Pharmacy Technician in Training" 都会命中预训练。agent 把预训练的 72 个标题全部读了一遍,把这类岗位排除掉,再重读确认。后训练如果加上 "RLHF",会被一家人力公司反复发布的数据标注岗位淹没,所以不用这个词。四个阶段用同一套条件,比较才公平。

计数

每个阶段做两次计数(全球、美国),每次 1 API Credit,不读取任何岗位记录。同一岗位的重复发布没有合并。条件定义在 queries/。

局限

只看标题,所以都是下限。岗位数衡量需求,不是在职人数。这是快照当天的截面。

最近一次复现

上一次复现花了多少,取自运行前后 Metix AI Platform 记录的余额。

运行日期
2026-09-21
调用次数
8
搜索结果
8
读取记录
0
API Credits
8

搜索结果是搜索返回的 ID 数,每次计数查询算一个,完整搜索按命中数算。记录是完整读取的岗位或档案:这个案例一条都没读。

做这个案例另外花了大约 93 API Credits:agent 做的抽检、试探性查询,以及被公开复现取代的早先运行。你不需要再花这部分。