v0.6.0 π
π Release Highlights
Starwhale 0.6.0 release brings essential performance and stability improvements for the datastore component. At the same time, Python SDK, dataset, and UI have also received some critical updates.
-
Datastore: In this release, we have enhanced the performance of the WAL log dumping process (#2782, #2800, #2805) and addressed the issue of unexpected empty data being automatically added in specific scenarios (#2825) on the Server side. On the Standalone side, we have conducted significant refactoring (#2794, #2820, #2809, #2774, #2807), including introducing a checkpoint mechanism and redesigning the storage mode for datastore meta files. These improvements result in a substantial reduction in the time required for the initial opening of a dataset while maintaining low memory consumption.
-
Dataset: We have implemented reliability guarantees for the dataset loader session consumption mechanism(#2849, #2858, #2763, #2770, #2860, #2852, #2746), ensuring that with a large number of replicas, all dataset data will be consumed and no data loss will occur. Additionally, we have optimized the performance of dataset copying for large datasets(#2759, #2781) and supported mixed types in the list or tuple for dataset features(#2754). Furthermore, we have conducted performance optimizations for copying extensive datasets(#2759, #2781) and expanded our support to encompass mixed data types within lists or tuples when defining dataset features(#2754).
-
Python SDK: It is now possible to create model evaluation tasks(#2839) for Standalone and Server/Cloud through the Python SDK. At the same time, we have redesigned the Evaluation SDK to enable the logging and scanning of data like images, videos, and audio to meet the need to record more complex evaluation metrics(#2808).
-
UI: We have made many improvements in Web UI, including support for Job Templates (#2810, #2801), Advanced Search Bar (#2855), faster filtering of models/runtimes/datasets when creating Evaluations (#2736), and a streamlined Projects page (#2728).
-
API Spec: We have redefined the API interface interaction between the Client and Server by leveraging the Pydantic library(#2639, #2753, #2734), thereby introducing an automated workflow for maintaining and updating the interface specifications. This initiative guarantees seamless compatibility across all interfaces.
π Breaking Changes
We must make breaking changes on the Standalone instance side for a better datastore design. Here are some operation advice:
- If you want to keep dataset data in the Standalone instance:
- Step 1: Copy the dataset into the Server Side with the
swcli dataset copy
command. - Step 2: Run
rm -rf ~/.starwhale/.datastore ~/.starwhale/self/dataset ~/.starwhale/self/job
command. - Step 3: Upgrade Starwhale by
pip install -U "starwhale>=0.6.0"
command. - Step 4: Download the previously uploaded dataset.
- Step 1: Copy the dataset into the Server Side with the
- If you don't want any data in the Standalone instance:
- Step 1: Run the
rm -rf ~/.starwhale
command. - Step 2: Upgrade Starwhale by
pip install -U "starwhale>=0.6.0"
command.
- Step 1: Run the
On the server side, full compatibility with legacy data has been achieved without requiring additional actions.
π§ What's Changed
- refactor(client): add models and API for the requests (#2639) @jialeicui
- refactor(client): dataset related model (#2753) @jialeicui
- refactor(client): use pydantic model in runtime context (#2734) @jialeicui
- enhance(console): search bar with a large number of interaction revisions, including keyboard linkage/support hints selector (#2855) @waynelwz
- update(console): filter by only my project (#2728) @waynelwz
- feat(console): tree selector support quick retrieval by shared/current/latest (#2736) @waynelwz
- feat(console): support job as template (#2810) @waynelwz
- feat(controller): add job template api (#2801) @goldenxinxing
- feat(sdk): support evaluation log artifacts (#2808) @tianweidut
- feat(SDK): add job create sdk (#2839) @tianweidut
- enhance(client): optimize the predict count logging for greater accuracy (#2730) @tianweidut
- chore(client): tune dataset copy progress ui (#2759) @tianweidut
- enhance(dataset): optimize dataset copy performance to minimize redundant full table scans (#2781) @tianweidut
- feat(dataset): support mixed types in the list or tuple for dataset features (#2754) @tianweidut
- bug(SDK): fix loader consumption missing upload issue (#2849) @tianweidut
- chore(ci): enhance session consume test stability (#2858) @tianweidut
- ci(e2e): add huge-tasks example into e2e (#2763) @tianweidut
- enhance(dataset): tune processed keys for data loader (#2770) @tianweidut
- fix(controller): add max wait time for load request (#2860) @goldenxinxing
- fix(controller): cache unassigned range data to memory for optimize dataset consumption (#2852) @goldenxinxing
- fix(controller): reset unprocessed data when job is failed (#2746) @goldenxinxing
- chore(datastore): add tombstone and checkpoint to manifest (#2799) @jialeicui
- enhance(datastore): support tombstone in standalone (#2807) @jialeicui
- enhance(datastore): auto dump memory table and reduce memory usage when building dataset (#2794) @jialeicui
- feat(datastore): datastore in standalone support checkpoint (#2820) @jialeicui
- refactor(datastore): use flat structure to avoid too many subdirectories (#2809) @jialeicui
- optimize(datastore): speed up opening datastore (#2774) @jialeicui
- enhance(datastore): dump wal to the local disk before sending to the remote storage (#2782) @xuchuan
- chore(chart): add wal log cache support (#2800) @jialeicui
- enhance(datastore): allow dumping when updating tables (#2805) @xuchuan
- bug(datastore): parquet read/write issue with list/map of objects (#2825) @xuchuan
- chore(datastore): use revision instead of timestamp as record versions (#2804) @xuchuan
- bug(ci): fix no Makefile example for e2e (#2771) @tianweidut
- bug(example): fix nmt example typo (#2842) @tianweidut
- bug(SDK): fix list/tuple types check for converting sequence (#2837) @tianweidut
- bug(SDK): resolve the 'evaluate phase cannot read tables in standalone' issue (#2772) @tianweidut
- chore(SDK): fix job doc typo (#2731) @tianweidut
- chore(SDK): remove concurrency field in sdk/client side (#2769) @tianweidut
- chore(SDK): support memory resource for human (#2788) @tianweidut
- chore(ci): add huge-tasks model.yaml for e2e case (#2779) @tianweidut
- chore(ci): add open api model test in e2e test (#2751) @jialeicui
- chore(ci): disable e2e and codeql cron (#2826) @tianweidut
- chore(ci): fix e2e no disk space and TableWriter close issue (#2854) @tianweidut
- chore(ci): speedup e2e with disable huge-task in standalone (#2798) @tianweidut
- chore(ci): tune examples for e2e (#2780) @tianweidut
- chore(client): add double quotes to variables (#2806) @goldenxinxing
- chore(client): add retry condition and count limit for API requests (#2859) @jialeicui
- chore(client): config resource type for runtime uri (#2738) @tianweidut
- chore(client): fix mypy lint issue (#2844) @jialeicui
- chore(client): rm lock when dumping table (#2818) @jialeicui
- chore(client): support filter with the server api (#2749) @jialeicui
- chore(client): update TableWriter default limits of run exceptions for fast fail (#2831) @tianweidut
- chore(controller): add max thread property for server and tune default to 500 (#2846) @goldenxinxing
- chore(controller): modify k8s job name to a legal one (#2832) @anda-ren
- chore(controller): remove legacy job result query (#2817) @anda-ren
- chore(controller): unify artifact's creation conflict code (#2816) @goldenxinxing
- chore(dataset): fix dataset types default init value issue (#2757) @tianweidut
- chore(datastore): remove schema checking when query or scan (#2729) @jialeicui
- chore(e2e): rsync huge-tasks for e2e env prepare (#2787) @tianweidut
- chore(e2e): tune random runtime for examples (#2789) @tianweidut
- chore(helm): update pypi index url for minikube cn (#2775) @tianweidut
- chore(test): auto copy test use local dataset (#2851) @goldenxinxing
- chore(example): update huge-tasks example evaluate validation (#2863) @tianweidut
- doc: update GitHub readme (#2732) @tianweidut
- chore(e2e): remove upgrade test from e2e (#2722) @anda-ren
- enhance(client): add datastore log(evaluation, dataset) id type validation (#2776) @tianweidut
- enhance(client): add debug cli for data store (#2834) @jialeicui
- enhance(client): make building environment python version as the runtime default python version (#2819) @tianweidut
- enhance(dataset): expose exceptions from dataset copy threads (#2829) @tianweidut
- enhance(dataset): fix dataset flush block when it meets the unsupported types in the features (#2796) @tianweidut
- enhance(dataset): tune the length of dataset (#2803) @tianweidut
- example(LLM): support baichuan2 llm models (#2717) @tianweidut
- example(dataset): add coco ds sdk builder (#2745) @anda-ren
- example(dataset): add huge tasks example (#2740) @tianweidut
- feat(client): support dataset head rows for the prediction phase of model run command (#2792) @tianweidut
- feat(client): refine project uri in standalone (#2785) @goldenxinxing
- feat(client): support auto copy artifact when run or serve (#2823) @goldenxinxing
- feat(client): support custom Starwhale version in runtime yaml (#2711) @goldenxinxing
- feat(console): save column width/resize status to config (#2793) @waynelwz
- feat(controller): add eval upload api for file (#2695) @goldenxinxing
- feat(controller): add list api for run (#2815) @anda-ren
- feat(controller): add recentlyUsed flag for artifact vo (#2725) @goldenxinxing
- feat(controller): artifact's list API support search by name (#2735) @goldenxinxing
- feat(controller): controller support rolling update (#2760) @anda-ren
- feat(controller): support event api for job (#2756) @jialeicui
- feat(controller): support set data range in artifact list-view-tree api (#2719) @goldenxinxing
- fix(ci): ignore the call to the untyped function "show" in typed context (#2767) @jialeicui
- fix(ci): remove the useless comment (#2724) @jialeicui
- fix(client): model build with example failed with the latest Gradio version (#2814) @jialeicui
- fix(client): prevent copying non-file when build a model with examples (#2827) @jialeicui
- fix(console): abnormal status of "ESC" key under search bar / optimize log view & task list display (#2784) @waynelwz
- fix(console): auto-hidden rows when resort with searching (#2742) @waynelwz
- fix(console): locale for save as / dataset columns / iconfont (#2847) @waynelwz
- fix(controller): dataset load with wrong key type (#2744) @goldenxinxing
- fix(controller): fix current run is null for a running task after controller restart (#2835) @anda-ren
- fix(controller): fix job load blocked by write operation (#2791) @anda-ren
- fix(controller): remove backoff limit (#2764) @goldenxinxing
- fix(controller): remove not null constraint for job creation (#2726) @jialeicui
- fix(controller): restore SQL syntax error with multiQueries is true (#2733) @goldenxinxing
- fix(controller): tune data read log table constrain (#2762) @goldenxinxing
- fix(datastore): prevent loading manifest in every insert (#2828) @jialeicui
- fix(datastore): query limit without deleted rows (#2822) @jialeicui
- fix(datastore): remove dup entry in data store manifest (#2824) @jialeicui
- fix(e2e): can not find pytest after open API test (#2790) @jialeicui
- fix(ut): make testing table of data store stable (#2830) @jialeicui
- refactor(client): parse respone when init (#2727) @jialeicui
- refactor(client): refactor evaluation, dataset type and mapping builder (#2802) @tianweidut
- refactor(controller): add not null constraint (#2644) @jialeicui
- refactor(controller): make shared boolean (#2768) @jialeicui
- refactor(controller): remove interface for api (#2739) @jialeicui
- refactor(controller): split run from task (#2783) @anda-ren
- update(console): add shared to list (#2743) @waynelwz
- update(console): e2e summary moved to overview (#2857) @waynelwz
- update(console): eval search support in / not in with test case (#2761) @waynelwz
- update(console): job overview with actions / disable markdown dark theme (#2718) @waynelwz
- update(console): job template not required (#2833) @waynelwz
- update(console): local debug params for raw table name show (#2778) @waynelwz
- update(console): mobile experience notice (#2723) @waynelwz
- update(console): optimize panel interaction group by name, config to top, loading before display and new overview page (#2795) @waynelwz
- update(console): support copy/paste/drag, optimize config local storage size (#2716) @waynelwz
- update(console): support list search by name/fix react attr camelcase warning (#2750) @waynelwz
- update(console): support record prev/next preview (#2766) @waynelwz
- update(console): temporary fix duplicate panel configuration/log viewer optimize when fullscreen (#2777) @waynelwz
- update(console): tree selector with recent api (#2741) @waynelwz
- update(console): user status by toggle and fix e2e cases (#2765) @waynelwz
- update(console): redirect when job created / use full job status for advanced search (#2862) @waynelwz
- update: locale of zh / show sort in header-cell (#2786) @waynelwz
βοΈ Who Contributes
@anda-ren, @goldenxinxing, @jialeicui, @tianweidut, @waynelwz and @xuchuan