A new nightly version has been released! ![]()
See the quickstart guide for installation instructions: Quickstart | MAX
MAX changelog updates:
-
InternVL and Gemma 3 multimodal models now return log probabilities, so
logprobsinmax serveandoutput_logprobsingenerate()work for
them. -
/v1/completionsnow returns a 400 error forechowithlogprobson a
server started without--enable-echo, when the model computes log
probabilities. The request used to crash the model worker. Other models
still return no log probabilities, andechowithoutlogprobshas no
effect. -
MAX Serveโs span attributes now sit under the entity they describe:
max.request_idis nowmax.request.id,max.batch_idismax.batch.id,
and the other request and batch attributes move undermax.request.*and
max.batch.*.kernel_agg:<name>spans carry the kernel name in
max.kernel.opinstead ofmax.kernel.name; per-kernel spans keep
max.kernel.name. Update trace queries that filter on the old names. -
max.nn.Transformer,DistributedTransformer,logits_postprocess()and
distributed_logits_postprocess()return a
max.nn.graph_groups.DecoderOutputsof named groups instead of a tuple.
Read the logits as
outputs.logits["logits"]rather thanoutputs[1], and pass the outputs to
Graph.output(outputs)rather than unpacking them. The graphโs outputs keep
their order, andGraph.output_treereturns them by name. -
ops.matmul()takes anout_dtypekeyword argument that sets the result
dtype. The inputs keep their own dtypes and are no longer cast to a common
one, sobfloat16inputs without_dtype=DType.float32keep the float32
accumulator. Withoutout_dtype,ops.matmul(), the@operator and
max.experimental.functionalโsmatmul()require both inputs to share a
dtype, which the result keeps, somax.nn.Linearraises when its input and
weight dtypes differ.
max.experimental.nn.Linearcasts its input to the weightโs dtype, so a
float32 input to a bfloat16Linearnow gives bfloat16 instead of float32. -
Removed the
blocking_sync,disable_timingandinterprocessparameters
from the MojoDeviceContext.create_event(), along withEventFlags. Events
never record timing; useDeviceContext.execution_time()to time kernels.
Mojo changelog updates:
- [stdlib] Move AMD-only intrinsics to
max.gpu.intrinsics - [mojo-compiler][stdlib] Deprecate
@explicit_destroyon structs - [mojo-lang][stdlib] Remove the legacy kernel capture ABI (#105477)
- [stdlib] Add an owning FileDescriptor type
- [mojo-lang][stdlib] Remove legacy closures (#105361)
- [mojo-lang] Fix import leaks from precompiled packages
- [stdlib] stabilize some more list methods.
- [stdlib] Fix the
SIMD.slicefast-path offset check
Raw MAX diff: https://github.com/modular/modular/compare/a1ccd09545970f73bd33527ef027d445b6ad0980...c783ebd98c26aa012cee07ecee96de212f19f22e
Current Mojo changelog: https://github.com/modular/modular/blob/main/Mojo/docs/site/nightly-changelog.md