MyGit

0.18.0

rerun-io/rerun

版本发布时间: 2024-08-16 18:06:10

rerun-io/rerun最新发布版本:prerelease(2024-09-02 21:03:39)

Rerun is an easy-to-use visualization toolbox for multimodal and temporal data. Try it live at https://rerun.io/viewer.

📖 Release blogpost: http://rerun.io/blog/column-chunks
🧳 Migration guide: http://rerun.io/docs/reference/migration/migration-0-18

https://github.com/user-attachments/assets/95380a64-df05-4f85-b40a-0c6b8ec8d5cf

✨ Overview & highlights

Rerun 0.18 introduces new column-oriented APIs and internal storage datastructures (Chunk & ChunkStore) that can both simplify logging code as well as improve ingestion speeds and memory overhead by a couple orders of magnitude in many cases (timeseries-heavy workloads in particular).

These improvements come in 3 broad categories:

Furthermore, we started cleaning up our data schema, leading to various changes in the way represent transforms & images.

New send APIs

Unlike the regular row-oriented log APIs, the new send APIs let you submit data in a columnar form, even if the data extends over multiple timestamps.

This can both greatly simplify logging code and drastically improve performance for some workloads, in particular timeseries, although we have already seen it used for other purposes!

API documentation:

API usage examples:

Python timeseries

Using log() (slow, memory inefficient):

rr.init("rerun_example_scalar", spawn=True)

for step in range(0, 64):
    rr.set_time_sequence("step", step)
    rr.log("scalar", rr.Scalar(math.sin(step / 10.0)))

Using send() (fast, memory efficient):

rr.init("rerun_example_send_columns", spawn=True)

rr.send_columns(
    "scalars",
    times=[rr.TimeSequenceColumn("step", np.arange(0, 64))],
    components=[rr.components.ScalarBatch(np.sin(times / 10.0))],
)
C++ timeseries

Using log() (slow, memory inefficient):

const auto rec = rerun::RecordingStream("rerun_example_scalar");
rec.spawn().exit_on_failure();

for (int step = 0; step < 64; ++step) {
    rec.set_time_sequence("step", step);
    rec.log("scalar", rerun::Scalar(std::sin(static_cast<double>(step) / 10.0)));
}

Using send() (fast, memory efficient):

const auto rec = rerun::RecordingStream("rerun_example_send_columns");
rec.spawn().exit_on_failure();

std::vector<double> scalar_data(64);
for (size_t i = 0; i < 64; ++i) {
    scalar_data[i] = sin(static_cast<double>(i) / 10.0);
}
std::vector<int64_t> times(64);
std::iota(times.begin(), times.end(), 0);

auto time_column = rerun::TimeColumn::from_sequence_points("step", std::move(times));
auto scalar_data_collection =
    rerun::Collection<rerun::components::Scalar>(std::move(scalar_data));

rec.send_columns("scalars", time_column, scalar_data_collection);
Rust timeseries

Using log() (slow, memory inefficient):

let rec = rerun::RecordingStreamBuilder::new("rerun_example_scalar").spawn()?;

for step in 0..64 {
    rec.set_time_sequence("step", step);
    rec.log("scalar", &rerun::Scalar::new((step as f64 / 10.0).sin()))?;
}

Using send() (fast, memory efficient):

let rec = rerun::RecordingStreamBuilder::new("rerun_example_send_columns").spawn()?;

let timeline_values = (0..64).collect::<Vec<_>>();
let scalar_data: Vec<f64> = timeline_values
    .iter()
    .map(|step| (*step as f64 / 10.0).sin())
    .collect();

let timeline_values = TimeColumn::new_sequence("step", timeline_values);
let scalar_data: Vec<Scalar> = scalar_data.into_iter().map(Into::into).collect();

rec.send_columns("scalars", [timeline_values], [&scalar_data as _])?;

Background compaction

The Rerun datastore now continuously compacts data as it comes in, in order find a sweet spot between ingestion speed, query performance and memory overhead.

This is very similar to, and has many parallels with, the micro-batching mechanism running on the SDK side.

You can read more about this in the dedicated documentation entry.

Post-processing of RRD files

To help improve efficiency for completed recordings, Rerun 0.18 introduces some new commands for working with rrd files.

Multiple files can be merged, whole entity paths can be dropped, and chunks can be compacted.

You can read more about it in the new CLI reference manual, but to give a sense of how it works the below example merges all recordings in a folder and runs chunk compaction using the max-rows and max-bytes settings:

rerun rrd compact --max-rows 4096 --max-bytes=1048576 /my/recordings/*.rrd > output.rrd

Overhauled 3D transforms & instancing

As part of improving our arrow schema and in preparation for reading data back in the SDK, we've split up transforms into several parts. This makes it much more performant to log large number of transforms as it allows updating only the parts you're interested in, e.g. logging a translation is now as lightweight as logging a single position.

There are now additionally InstancePoses3D which allow you to do two things:

instancing in action All four tetrahedron meshes on this screen share the same vertices and are instanced using an InstancePoses3D archetype with 4 different translations

⚠️ Breaking changes

🧳 Migration guide: http://rerun.io/docs/reference/migration/migration-0-18

🔎 Details

🪵 Log API

🌊 C++ API

🐍 Python API

🦀 Rust API

🪳Bug Fixes

🌁 Viewer improvements

🚀 Performance improvements

🧑‍🏫 Examples

📚 Docs

🖼 UI improvements

🕸️ Web

✨ Other enhancement

🧑‍💻 Dev-experience

🗣 Refactors

📦 Dependencies

🤷‍ Other

相关地址:原始地址 下载(tar) 下载(zip)

1、 librerun_c-0.18.0-aarch64-apple-darwin.a 35.15MB

2、 librerun_c-0.18.0-aarch64-unknown-linux-gnu.a 52.34MB

3、 librerun_c-0.18.0-x86_64-apple-darwin.a 35.95MB

4、 librerun_c-0.18.0-x86_64-unknown-linux-gnu.a 49.74MB

5、 rerun-cli-0.18.0-aarch64-apple-darwin 60.14MB

6、 rerun-cli-0.18.0-aarch64-unknown-linux-gnu 75.08MB

7、 rerun-cli-0.18.0-x86_64-apple-darwin 63.9MB

8、 rerun-cli-0.18.0-x86_64-pc-windows-msvc.exe 52.12MB

9、 rerun-cli-0.18.0-x86_64-unknown-linux-gnu 78.43MB

10、 rerun_c-0.18.0-x86_64-pc-windows-msvc.lib 51.68MB

11、 rerun_cpp_sdk-0.18.0-multiplatform.zip 60.14MB

12、 rerun_cpp_sdk.zip 60.14MB

13、 rerun_notebook-0.18.0-py2.py3-none-any.whl 10.3MB

14、 rerun_sdk-0.18.0-cp38-abi3-macosx_10_12_x86_64.whl 31.41MB

15、 rerun_sdk-0.18.0-cp38-abi3-macosx_11_0_arm64.whl 30.53MB

16、 rerun_sdk-0.18.0-cp38-abi3-manylinux_2_31_aarch64.whl 36.59MB

17、 rerun_sdk-0.18.0-cp38-abi3-manylinux_2_31_x86_64.whl 36.89MB

18、 rerun_sdk-0.18.0-cp38-abi3-win_amd64.whl 28.07MB

查看:2024-08-16发行的版本