From: microsoft <huggingface.co/microsoft>Newsgroups: alt.freeweights.textSubject:

AesCode-8B

Date: 2026-11-15Commit: cfe1f69Signed: 2DC28CC7B26A283B ✓

Image text to text model with 8.8B parameters. Safetensors weights, 17.6 GB in all. Published by microsoft under Apache-2.0.

8.8B params17.6GBAesCode-8Bsafetensorspermissive
FactsParams8.8BSize17.6 GBFormatssafetensorsTaskimage text to textLicenseApache-2.0From sourcepermissive
$ fw get microsoft/AesCode-8B
# manifest sha256 787152673ea6… · 17.6 GB · 19 files
$ fw verify ./AesCode-8B microsoft/AesCode-8B
From sourceHosted (signed)microsoft/AesCode-8BLast check: 2026-11-15 03:27 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Fine-tune of Qwen3-VL-8B-Instruct.

Runs withAIBrixBentoMLCTranslate2ExLlamaV2ExLlamaV3exofastllmFlashInferKTransformersLitServeLMCacheLMDeployLocalAImistral.rsMLC LLMMooncakeSGLangText Generation WebUItinygradTransformersTriton Inference ServervLLMXinferenceFine-tune withAccelerateAlignment HandbookAxolotlColossal-AIDeepSpeedEasyR1FlashAttentionH2O LLM StudioJAXKerasLiger KernelLitGPTLLaMA-FactoryMegatron-LMms-swiftnanotronOLMo-coreOpenRLHFOumiPEFTPyTorch Lightningsd-scriptsSimpleTunerTorchTitantorchtuneTransformer EngineTRLUnslothverlConvert withAQLMAutoRoundCore ML ToolsExecuTorchGPTQModelLLM CompressormergekitNeural CompressorOliveONNXOptimum QuantoOptimumsafetensorsTensorRT Model OptimizertorchaoEvaluate withAutoevalsDeepEvalEvaluateHELMLightEvallm-evaluation-harnessOpenCompassOpikRagassimple-evalsSWE-benchTruLensWeaveScan withAgentDojoAI Fairness 360DeepTeamDetoxifyFairlearngarakGiskardGuardrailsMCP ScannerModelScanNeMo GuardrailspicklescanpromptfooWorks withAgent Development KitAG2Google AI Edge GalleryAiderany-llmAnythingLLMBAMLbrowser-useCAMELHugging Face Chat UIChatboxCherry StudioClineCodex CLICogneeCrewAIDeerFlowdocTRDSPyEasyOCREnchantedGemini CLIGitHub MCP ServergooseGPT ResearcherGradioGraphitiGuidanceHollamaInstructorKilo CodeLangflowLangGraphLiteLLMLlamaIndexLLMLocalAGILoLLMs WebUIMCP Python SDKMem0MetaGPTNextChatOllama JavaScriptOllama PythonolmOCROpenAI Agents SDKopencodeOpenHandsotermOutlinesPage AssistPlaywright MCPPortkey AI GatewayPrivateGPTQwen CodeRWKV RunnerSemantic KernelsmolagentsStrands AgentsSuryaVaneXGrammar

Overview

Size
17.6 GB
Weights
17.5 GB (safetensors)
Parameters
8.8B
Formats
safetensors
Task
image text to text
License
Apache-2.0 (permissive)
Files
19, each with a sha256
Publisher
microsoft
Added
2026-11-15
Section
alt.freeweights.text
Lineage

Original release from the publisher.

Base model: Qwen/Qwen3-VL-8B-Instruct

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 03:27 UTCpassed

Model card

From the publisher at commit cfe1f69. Shown as plain text with links; images open at the publisher.

AesCode-8B#

AesCode generates information-rich visual artifacts such as slides, posters, and dashboards as HTML/CSS. The output remains structured, editable, and verifiable, but the task poses a distinct challenge: code models cannot see how layout, hierarchy, and color come together on the canvas.

Image generators offer the opposite strength. They compose visually compelling pages but often misrender text, numbers, and logical relationships. AesCode uses an image generated from the same prompt as an aesthetic reference while following the prompt for the required content.

Reference input alone does not solve the problem. Off-the-shelf vision-language models may copy hallucinated content or ignore the reference layout. AesCode separates semantic requirements from visual cues through graph-structured supervision and decoupled cross-modal rewards.

AesCode-8B starts from Qwen3-VL-8B-Instruct and is trained with cold-start SFT followed by GDPO across seven reward channels.

Image: Infographics generated as editable HTML and CSS by AesCode

Intended Use#

AesCode is designed to generate information-rich visual artifacts as structured HTML/CSS. It is suited for creating editable slides, posters, dashboards, and reports, as well as for research on multimodal code generation and verifiable visual design.

Results#

We evaluate on 300 infographic samples. Rule averages the programmatic Text, Bound, and Chart checks. Visual averages the Content, Layout, and Style checklist dimensions. Overall is the mean of Rule and Visual. Scores are percentages averaged over three generations per prompt with no selection.

Ref. indicates whether the model receives an image-generated reference together with the prompt. Bold marks the best score in each column and underline the second best.

ModelRef.TextBoundChartRuleContentLayoutStyleVisualOverall
GPT-5.5No88.6786.1882.8585.9079.2768.0952.8066.7276.31
GPT-5.5Yes89.2286.8581.3585.8082.4489.9357.9176.7681.28
Claude Opus 4.8No91.4085.0387.6988.0484.9864.8846.7265.5376.78
Claude Opus 4.8Yes92.4584.4373.7583.5586.4289.7655.5177.2380.39
Qwen3-VL-8BNo58.3277.2343.3059.6138.3323.9713.2225.1742.39
Qwen3-VL-8BYes64.0770.9942.3559.1452.9051.3329.9244.7251.93
Qwen3-VL-32BNo66.0080.3141.3662.5549.8134.8519.3434.6748.61
Qwen3-VL-32BYes71.1979.6150.7767.1962.0464.5938.4355.0261.10
AesCode-8BYes94.0688.3687.7990.0786.4187.8053.2175.8082.94
AesCode-32BYes95.3497.2790.3794.3385.7690.5855.9977.4485.89

AesCode-8B improves Visual over its reference-conditioned Qwen3-VL-8B backbone by 31.1 points and Overall by 31.0. Its Overall score of 82.94 exceeds the reference-conditioned GPT-5.5 and Claude Opus 4.8 results, while Rule reaches 90.07. The visual gains do not come at the expense of verifiable correctness.

Style is the shared ceiling for every system. It awards credit only when a design needs no further visual revision before delivery, and no model clears 60.

Usage#

The model follows the Qwen3-VL chat interface and requires transformers>=4.57. Supply a detailed content prompt and, when available, a reference image for layout and style guidance.

from transformers import AutoProcessor, AutoModelForImageTextToText

model_id = "microsoft/AesCode-8B"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(
    model_id, dtype="auto", device_map="auto"
)

messages = [{
    "role": "user",
    "content": [
        {"type": "image", "image": "reference.png"},
        {"type": "text", "text": "<your content prompt>"},
    ],
}]

inputs = processor.apply_chat_template(
    messages, add_generation_prompt=True, tokenize=True,
    return_dict=True, return_tensors="pt",
).to(model.device)

out = model.generate(
    **inputs, do_sample=True, temperature=0.8, top_p=0.95, max_new_tokens=12000
)
print(processor.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))

For batched generation, serve with vLLM and allow two images per prompt:

vllm serve microsoft/AesCode-8B --limit-mm-per-prompt image=2 --max-model-len 24576

Reported scores use three rollouts per prompt at temperature 0.8, top-p 0.95, up to 12,000 output tokens and a 24,576-token context.

The model emits a complete HTML document. Tables use HTML table structures and charts use ECharts specifications, keeping both directly inspectable and verifiable.

The reference image is optional. Reference-conditioned training internalizes visual planning into the policy. Measured on AesCode-8B, withholding the reference at inference costs only 1.00 Visual point, against 19.55 for the Qwen3-VL-8B-Instruct backbone and 10.04 for GPT-5.5. Quality is still highest when a reference is supplied.

The repository provides the training prompt template and a pipeline that turns a short idea into the prompt and reference pair the model expects.

Training#

Cold-start SFT. 3,000 demonstrations at learning rate 1e-5.

Reinforcement learning. GDPO over 7,408 prompts for 400 steps, using verl's FSDP-vLLM hybrid engine with no critic and no separately trained reward model. AdamW at a constant 5e-6, no warmup, weight decay 0.01, 128 prompts per step with 8 rollouts each, KL and entropy coefficients both 0.001, rollout temperature 1.0 and top-p 1.0, prompt and response each capped at 8,192 tokens. AesCode-32B uses the same recipe and a longer 520-step run.

The reward is not a single scalar. Each target is represented as a design graph describing the whole canvas, which makes every property individually attributable. From that graph come two complementary reward families: deterministic verifiers score the properties parsable from the code and its rendering, while a VLM judge scores the non-parsable ones using a sample-specific Visual Graph Rubric tied to the graph's elements and relations. These form seven channels: execution, text, boundary, tablechart, layout, whitespace, and design. Each is normalized within its rollout group before aggregation, so a dominant signal cannot drown out a weaker one.

Candidate HTML is scored by rendering it in a sandboxed Playwright browser with external requests blocked, which exports the DOM, computed styles, bounding boxes, console status and a screenshot.

Training code, the verifier stack and the Visual Graph Rubric builder are released at https://github.com/microsoft/AesCode.

Citation#

@article{gao2026aescode,
  title   = {AesCode: Aesthetic Code Generation with Decoupled Cross-Modal Rewards},
  author  = {Gao, Xin and Yang, Yifan and Li, Xin and Wang, Pan and Li, Yan and Tian, Muzhao and Cheng, Mingxi and Liu, Bei and Qiu, Kai and Dai, Qi and Chen, Dong and Dong, Yue and Tassiulas, Leandros and Ying, Rex and Li, Ji and Luo, Chong},
  journal = {arXiv preprint arXiv:2610.18860},
  year    = {2026}
}

License#

Released under the Apache 2.0 license, following the Qwen3-VL backbone.

Files

19 files · 17.6 GBWeights 17.5 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 19 files with their sha256
FileSizesha256
.gitattributes1.75 KB1e5df5e9b850e0896f69f7e46ef9af0e011e489efc8c3bfcc87f2cc26a43d9a4
README.md8.23 KBc4063b3ed2c6d00fe614ee82272f4565afec607ff2ff0a7a0fd350b8f998a2d9
added_tokens.json707 Bc0284b582e14987fbd3d5a2cb2bd139084371ed9acbae488829a1c900833c680
assets/teaser.png400 KB334db1958d6e1b2a4a341e8a00e5c9fbceb09617dba58b3cd5e639db9b67f34a
chat_template.jinja5.29 KB3636d0f0bd6bef02654cdffdc447b79cb2cef8ab02cc75267345946291a489e4
config.json1.59 KB196902460fec0575bca061ac6279f4b055524463bc2d61a2dc8bc46a5de875b3
generation_config.json199 B73047766b236c16f95f1205f5f3bb14680e85e2c6be0f99fc18232cf8ec7a7eb
merges.txt1.67 MB8831e4f1a044471340f7c0a83d7bd71306a5b867e95fd870f74d0c5308a904d5
model-00001-of-00004.safetensors4.98 GBb3ddf6bad17d7e832a64c9ee64917eeb305dcf5ae10bd328d23937ae84f75d62
model-00002-of-00004.safetensors5.00 GB8ec08f99d3653f15fde27ab70d6c1300c1a3c94dbac0ef34a3b82e7f0158742d
model-00003-of-00004.safetensors4.91 GB67aba1c657f30e45aa6b705cfef8a6b6838d8c565c46c78aead7cbca2e177fac
model-00004-of-00004.safetensors2.65 GB69bf5cfd70ebd9580f945bbe4575109d8b0fce2ebb4b8b4e0ef465d6fb8aaebd
model.safetensors.index.json67.8 KBb97aba48ec9329502e3967c2a27120b164ddbb8e12cdf84f24e8745cc862ebe4
preprocessor_config.json782 B93585062a80db5e8ca038efc7726a3e6411d9db948472d81d63c6303993be8c5
special_tokens_map.json613 B76862e765266b85aa9459767e33cbaf13970f327a0e88d1c65846c2ddd3a1ecd
tokenizer.json11.4 MBaeb13307a71acd8fe81861d94ad54ab689df773318809eed3cbe794b4492dae4
tokenizer_config.json5.47 KBcf43a5bf1a49ee69ecced02f419b169e72559034dcf15af47cf775bd253830f0
video_preprocessor_config.json817 B59c5c9eb52182eb14c06ffb10ca9effd29adce5f238a95de23ca14a38dbd2cb1
vocab.json2.78 MBca10d7e9fb3ed18575dd1e277a2579c16d108e32f27439684afa0e10b1440910
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
cfe1f698e0 pinned now2026-11-15 03:27 UTC19 files · 17.6 GB

Use it

$ fw get microsoft/AesCode-8B
# manifest sha256 787152673ea6… · 17.6 GB · 19 files
$ fw verify ./AesCode-8B microsoft/AesCode-8B
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/microsoft/AesCode-8B.json --dir ./AesCode-8B $ python3 fw.py verify ./AesCode-8B ./microsoft__AesCode-8B.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download microsoft/AesCode-8B --revision cfe1f698e09b8e7a009901ca700c765e25240af6 --local-dir ./AesCode-8B
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModelForImageTextToText, AutoProcessor processor = AutoProcessor.from_pretrained("microsoft/AesCode-8B", revision="cfe1f698e09b8e7a009901ca700c765e25240af6") model = AutoModelForImageTextToText.from_pretrained("microsoft/AesCode-8B", revision="cfe1f698e09b8e7a009901ca700c765e25240af6", device_map="auto")
vLLMServe an OpenAI-compatible API.
$ HF_ENDPOINT=https://freeweights.allternit.com vllm serve microsoft/AesCode-8B --revision cfe1f698e09b8e7a009901ca700c765e25240af6

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
c4063b3ed2c6d00fe614ee82272f4565afec607ff2ff0a7a0fd350b8f998a2d9
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: microsoft <huggingface.co/microsoft>Newsgroups: alt.freeweights.textSubject: AesCode-8BDate: 2026-11-15Commit: cfe1f69Signed: 2DC28CC7B26A283B ✓
Upstream
microsoft/AesCode-8B
Pinned commit
cfe1f698e09b8e7a009901ca700c765e25240af6
Manifest
AesCode-8B.json · .minisig
Manifest sha256
787152673ea66f3ec92cf719a7d928ae9e7422a7a557ed51d3912bfc7443ecbe
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 03:27 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/microsoft/AesCode-8B.json $ curl -O https://freeweights.allternit.com/manifests/microsoft/AesCode-8B.json.minisig $ minisign -Vm AesCode-8B.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

Qwen/Qwen3-VL-8B-Instruct · this model is a finetune of it

1 model in the catalog name this one as their parent.

Quantizations
1
Quantizations 1
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download microsoft/AesCode-8B
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. AesCode-8B.json. Provenance. Takedown history: none.

Variants

1 quantized or adapter build of AesCode-8B. Each has its own license check and page.

From: laion <huggingface.co/laion>Subject: a2-rl-e2egit_large-50-32B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_e2egit-large-15-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_e2egit-v2-10-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_pymethods2test-large-80-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_unitsyn-python-large-10-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_mix_h2_language_proportional-65-8B