LevelField: Manufacturing Process Planning from Engineering Drawings
LevelField is an open-source, 9B-parameter multimodal model for non-standard machining process planning. It helps process engineers interpret 2D manufacturing drawings and draft machining routes with optimization suggestions.
Try the online demo ยท Download model files ยท Level AI
Update History
- [10/10/2026] Update post-training weights for better performance.
Model overview
| Attribute | Details |
|---|---|
| Developer | Level AI (่ๆฒAI) |
| Base model | Qwen3.5-9B |
| Parameters / precision | 9B / BF16 |
| Release format | Merged safetensors weights, approximately 20 GB, with inference configuration files |
| Languages | Chinese and English |
| Task | Drawing interpretation and manufacturing process planning |
| License | Apache 2.0; commercial use is permitted under the license terms |
What the model does
| Capability | Description |
|---|---|
| Drawing interpretation | Extracts part names, drawing numbers, materials, dimensions, tolerances, surface roughness, and technical requirements. |
| Process planning | Uses reviewed machining requirements to propose an operation sequence, identify unsuitable processes, and suggest improvements. |
| Process coverage | Supports the 18 manufacturing process types listed below. |
The drawing workflow covers PDF and image documents. The API example below sends a JPEG image; render PDF pages to images before using this API workflow.
The process-planning prompt uses these 18 process types:
| Process | Chinese label |
|---|---|
| Turning | ่ฝฆๅ |
| Milling | ้ฃๅ |
| Drilling | ้ปๅ |
| Grinding | ็ฃจๅ |
| Casting | ้ธ้ |
| Forging | ้ป้ |
| Heat treatment | ็ญๅค็ |
| Surface treatment | ่กจ้ขๅค็ |
| Electrical discharge machining (EDM) | ็ต็ซ่ฑๅ ๅทฅ |
| Bench work | ้ณๅ ๅทฅ |
| Assembly | ่ฃ ้ |
| Gear machining | ้ฝฟๅ ๅทฅ |
| Sheet metal forming | ้ฃ้ๆๅ |
| Welding | ็ๆฅ |
| Wire EDM | ็บฟๅๅฒ |
| Laser marking | ๆฟๅ ๆๆ |
| Inspection | ๆฃ้ช |
| Stock cutting | ไธๆ |
Quickstart
1. Try the online demo
Use the LevelField demo to explore the drawing-to-process-planning workflow without a local deployment.
2. Download the model
pip install -U huggingface_hub
hf download level-ai/LevelField --local-dir ./LevelField
3. Start a vLLM server
The release documents these deployment requirements:
- vLLM 0.19.1 or later.
- At least one NVIDIA H100 GPU.
- NVIDIA CUDA 12.9, as reported in the tested environment.
GPU memory capacity, concurrency, and image size were not specified in the original deployment notes. Memory requirements depend on workload and serving settings; the approximately 20 GB weight size is not the total GPU memory requirement.
In a compatible CUDA environment, install vLLM and launch the server:
pip install 'vllm>=0.19.1'
CUDA_VISIBLE_DEVICES=0 \
OMP_NUM_THREADS=1 \
vllm serve ./LevelField \
--host 127.0.0.1 \
--port 18124 \
--served-model-name LevelField \
--reasoning-parser qwen3 \
--chat-template-content-format openai \
--trust-remote-code \
--max-model-len 32768 \
--gpu-memory-utilization 0.9 \
--mm-processor-cache-type shm
This configuration uses a 32,768-token serving limit and binds the endpoint to the local machine. The serving limit is a deployment setting, not a claim about the model's maximum supported context length.
4. Submit a drawing
Install the client:
pip install openai
Save a legible drawing as test.jpg in your working directory, then run the following request example. The Chinese prompt asks the model to generate a process sequence using the 18 available process types.
import base64
from openai import OpenAI
import json
client = OpenAI(api_key="EMPTY", base_url="http://localhost:18124/v1")
model = "LevelField"
SYSTEM_PROMPT = (
"ไฝ ๆฏไธไฝๆบๆขฐๅถ้ ๅทฅ่บ่ฎพ่ฎกไธๅฎถใ"
"่ฏทๆ นๆฎๅทฅ็จๅพ็บธ๏ผๅ
ไปๅพ็บธไธญๆๅ้ถไปถไฟกๆฏ๏ผๆ ้ขๆ ใๆๆฏ่ฆๆฑ็ญ๏ผ๏ผ"
"็ถๅๆจๅฏผๅบๅฎๆด็ๅทฅ่บๆต็จใ่ฏท็จไธญๆ่พๅบใ"
"ๅฆๆๅพ็บธไธๆธ
ๆฐใไธๆฏๆบๆขฐๅทฅ็จๅพ็บธใๆๆ ๆณ่ฏๅซๅ
ณ้ฎไฟกๆฏ๏ผ่ฏท่ฏดๆๅๅ ๏ผไธ่ฆ็ผ้ ๅ
ๅฎนใ"
)
PROCESSES = [
"่ฝๆ",
"ๆฎ่ฝฆ", "ๆฐ่ฝฆ", "ๅฐๆฎ่ฝฆ",
"ๆฎ้ฃ", "ไธ่ฝด", "ๅ่ฝด", "ไบ่ฝด", "ๅงๅ ",
"ๅนณ้ข็ฃจ", "ๅ
ๅคๅ็ฃจ", "ๅคๅ็ฃจ", "ๅนณ็ฃจ", "็ฃจๅบ",
"ไธญไธ", "ๆ
ขไธ", "ๅฟซไธ", "็บฟๅฒ",
"็ฉฟๅญ", "็ต็ซ่ฑ", "ๆทฑๅญ", "ๆทฑๅญ้ป", "ๆ่้ป", "้ปๅบ",
"็ญๅค็", "ๅ็ซ", "่กจ้ขๅค็", "ๆๅ
",
"ๆฃ้ช", "ไธๅๆ ", "้ณๅทฅ",
"่ฃ
้
", "ๅ้
", "้็", "็ๆฅ", "็ญ้
",
"่ฏๅ", "้ๅบๅงๅค", "ๆต่ฝฌ", "ๅจๅนณ่กก", "ๆฟๅ
้ๅป",
]
EQUIPMENT_MAP = {}
def encode_image_base64(image_path):
with open(image_path, "rb") as f:
return base64.b64encode(f.read()).decode("utf-8")
image_path = "test.png"
image_base64 = encode_image_base64(image_path)
user_prompt = f"""ใๅฏ็จๅทฅๅบ่ฏ่กจใ
{json.dumps(PROCESSES, ensure_ascii=False, indent=2)}
ใๅฏ็จ่ฎพๅคๆธ
ๅใ
{{}}
ใๅฏ็จๅๅ
ทๆธ
ๅใ
{{}}
ใๅฏ็จๆฃๅ
ทๆธ
ๅใ
{{}}
่ฏทๅๆ่ฟๅผ ๅทฅ็จๅพ็บธ๏ผๆ นๆฎไธ่ฟฐๅทฅๅบ่ฏ่กจใ่ฎพๅคๆธ
ๅใๅๅ
ทๆธ
ๅใๆฃๅ
ทๆธ
ๅๅๅทฅ่บ่งๅ๏ผๆจๅฏผๅทฅ่บๆต็จๅนถ่พๅบJSONใ
่ฆๆฑ๏ผ
1. ๅทฅๅบๅ็งฐๅช่ฝไฝฟ็จๅทฅๅบ่ฏ่กจไธญ็ๅ็งฐ
2. ่ฎพๅคๅช่ฝไปๅฏ็จ่ฎพๅคๆธ
ๅไธญ้ๆฉ๏ผๅคๅฐ่ฎพๅค็จๅๅทๅ้๏ผ๏ผๆธ
ๅไธญๆ ๅฏนๅบๅทฅๅบๆถ็็ฉบ
3. ๅๅ
ทไผๅ
ไปๅๅ
ทๆธ
ๅไธญ้ๆฉ๏ผๆธ
ๅไธบ็ฉบๆถๆ นๆฎๅทฅ่บๅธธ่ฏๆจๅฏผๅกซๅ
4. ๆฃๅ
ทไผๅ
ไปๆฃๅ
ทๆธ
ๅไธญ้ๆฉ๏ผๆธ
ๅไธบ็ฉบๆถๆ นๆฎๅทฅ่บๅธธ่ฏๆจๅฏผๅกซๅ
5. JSONไธญไธ่ฆไฝฟ็จLaTeXๆ ผๅผ๏ผ่ฏทไฝฟ็จUnicodeๅญ็ฌฆ๏ผๅฆฯ๏ผ"""
stream = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": SYSTEM_PROMPT},
{
"role": "user",
"content": [
{"type": "text", "text": user_prompt},
{
"type": "image_url",
"image_url": {"url": f"data:image/{'png' if image_path.lower().endswith('.png') else 'jpeg'};base64,{image_base64}"},
},
],
},
],
temperature=0.85,
top_p=0.95,
max_tokens=16384,
presence_penalty=1.0,
stream=True,
extra_body={
"top_k": 20,
"chat_template_kwargs": {"enable_thinking": True},
},
)
print("ใๆ่่ฟ็จใ", flush=True)
in_reasoning = True
for chunk in stream:
if not chunk.choices:
continue
delta = chunk.choices[0].delta
reasoning = getattr(delta, "reasoning", None) # ๆ่ๅ
ๅฎน
content = getattr(delta, "content", None) # ๆ็ปๅ็ญ
if reasoning:
print(reasoning, end="", flush=True)
if content:
if in_reasoning: # ๆ่็ปๆ, ๅๅฐๅ็ญ
print("\n\nใๆ็ปๅ็ญใ", flush=True)
in_reasoning = False
print(content, end="", flush=True)
print()
This example enables thinking through chat_template_kwargs and prints the reasoning field when returned, followed by the final answer. Use it with the server configuration above, including --reasoning-parser qwen3.
For a PNG drawing, change the file path and the data URL MIME type to image/png. The image payload follows the vLLM multimodal input format.
If generation reaches the 2,000-token output limit before producing a complete answer, increase max_tokens within the available context capacity.
Recommended workflow
- Supply a legible drawing with all relevant views and annotations.
- Check the extracted requirements against the drawing, especially units, tolerances, materials, and surface finish.
- Provide production constraints such as quantity, stock form, available machines, tooling, and inspection capabilities.
- Request a process route using the reviewed requirements and constraints.
- Have a qualified process engineer validate the route before production use.
Training background
Level AI reports fine-tuning and reinforcement training using 100,000 manufacturing drawings and process sheets from 16 factories. Data construction and result validation involved the Level AI engineering team and 36 process engineers with more than 20 years of hands-on experience.
The release does not specify the data split, training hyperparameters, reinforcement method, or dataset access and licensing details.
Reported results
| Evaluation setting | Reported result |
|---|---|
| Internal evaluation | More than 95% alignment between model process reasoning and senior process engineers' decisions |
| Pilot customer usage | Approximately 60% reduction in process-route drafting time |
These are developer-reported results. The release does not provide evaluation sample sizes, scoring criteria, comparison baselines, or uncertainty estimates. The alignment figure should not be interpreted as a general accuracy score, and the time reduction may vary across production settings.
Limitations and intended use
LevelField is intended to assist process engineers with interpretation and planning. Generated routes are proposals that require engineering review.
- Check small annotations, dense drawings, and ambiguous geometry carefully; extracted details may be incomplete or incorrect.
- Missing information can lead to unsupported assumptions. Ask the model to identify uncertainty explicitly.
- A drawing alone does not establish shop-floor feasibility. Validate machine capability, fixtures, tooling, material condition, and inspection requirements.
- Performance across different industries, drawing conventions, materials, and languages has not been separately documented in this release.
- The release does not establish validated CNC program generation or autonomous production control.
License and feedback
LevelField is released under Apache 2.0. Review the repository's license terms before redistribution or commercial integration.
For questions or reproducible issues, open a discussion in the Hugging Face community tab. Include the serving version, configuration, prompt, and a shareable example where possible.
- Downloads last month
- 176