{"id":4616,"date":"2026-09-26T18:13:08","date_gmt":"2026-09-26T09:13:08","guid":{"rendered":"https:\/\/localmodelwatch.tsuchitsuchi.com\/2026\/09\/26\/smoldataenvs-rl-tasks-small-model-optimization\/"},"modified":"2026-09-27T22:09:41","modified_gmt":"2026-09-27T13:09:41","slug":"smoldataenvs-rl-tasks-small-model-optimization","status":"publish","type":"post","link":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/2026\/09\/26\/smoldataenvs-rl-tasks-small-model-optimization\/","title":{"rendered":"SmolDataEnvs: RL Tasks for Small Model Optimization"},"content":{"rendered":"<p><!-- lmw:facts --><\/p>\n<h2>At a Glance<\/h2>\n<div class=\"lmw-table-scroll\" tabindex=\"0\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;\">\n<table style=\"width:max-content;min-width:100%;border-collapse:collapse;\">\n<thead>\n<tr>\n<th>Item<\/th>\n<th>Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Repository<\/td>\n<td><a href=\"https:\/\/huggingface.co\/datasets\/FineEnvs\/SmolDataEnvs\">FineEnvs\/SmolDataEnvs<\/a><\/td>\n<\/tr>\n<tr>\n<td>Published<\/td>\n<td>2026-09-24<\/td>\n<\/tr>\n<tr>\n<td>Source type<\/td>\n<td>Primary source (the publisher itself)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><em>Values determined by this site&#8217;s code at collection time. Dates are JST.<\/em><\/p>\n<p><!-- \/lmw:facts --><\/p>\n<h2>Overview<\/h2>\n<p><code>FineEnvs\/SmolDataEnvs<\/code> is a dataset containing over 5.5K reinforcement learning (RL) tasks designed for hill-climbing optimization of small models in the code and data science domains. The dataset is provided in a plain format that requires no execution environment (runtime) or specific framework, allowing it to be used immediately simply by loading it. Each row includes an actual tabular dataset, a corresponding question, and a gold answer that can be deterministically verified with the included grader, making it easy to test and evaluate prompts even with small models in a local environment.<\/p>\n<h2>Claims and Evidence<\/h2>\n<p>Presenter FineEnvs claims that this dataset can provide extremely reliable, deterministic signals for the reinforcement learning and evaluation of small models. To support this claim, the following features and data composition are presented.<\/p>\n<h3>1. Tasks Subject to Rigorous Verification Processes<\/h3>\n<p>All included tasks are built on top of the <a href=\"https:\/\/huggingface.co\/datasets\/jupyter-agent\/jupyter-agent-dataset\">jupyter-agent dataset<\/a>, which was extracted from actual data science notebooks spanning 471 Kaggle datasets. Every extracted question-answer pair has passed verification confirming that a strong agent model can actually solve the task in a live sandbox environment and reproduce the gold answer under deterministic grading. Since all ambiguous or unverifiable tasks have been eliminated, every included task is guaranteed to be &#8220;solvable&#8221; and &#8220;objectively gradable.&#8221;<\/p>\n<h3>2. LLM-Independent Deterministic Evaluation System<\/h3>\n<p>No LLM-based judgment (LLM-as-a-judge) is involved in the evaluation (reward signal) pathway of this dataset. The included <code>grader.py<\/code> performs step-by-step rule-based checks such as exact matching, numerical comparison taking tolerances (<code>atol<\/code>\/<code>rtol<\/code>) into account, list or percentage normalization, and symbolic equivalence verification. This prevents evaluation metric drift caused by changes in the evaluation model and allows model performance to be measured against a constant standard at all times.<\/p>\n<h3>3. Intentionally Hardened Evaluation Splits<\/h3>\n<p>The test and evaluation splits are designed to be more difficult than the training split. Specifically, while the train split consists of 29% easy and 14% hard tasks, the held-out evaluation splits (<code>test<\/code> and <code>eval<\/code>) consist of 11\u201313% easy and 38\u201340% hard tasks. This makes it possible to measure the generalization performance of models more rigorously. The details of the data split are as follows:<\/p>\n<div class=\"lmw-table-scroll\" tabindex=\"0\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;\">\n<p class=\"lmw-table-hint\" style=\"margin:0 0 4px;font-size:0.85em;opacity:0.7;\">\u2192 Scroll horizontally to see all columns<\/p>\n<table style=\"width:max-content;min-width:100%;border-collapse:collapse;\">\n<thead>\n<tr>\n<th>Split<\/th>\n<th>Tasks<\/th>\n<th>Easy<\/th>\n<th>Medium<\/th>\n<th>Hard<\/th>\n<th>What it&#8217;s for<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>train<\/code><\/td>\n<td>5,000<\/td>\n<td>1,433<\/td>\n<td>2,845<\/td>\n<td>722<\/td>\n<td>training<\/td>\n<\/tr>\n<tr>\n<td><code>test<\/code><\/td>\n<td>250<\/td>\n<td>33<\/td>\n<td>118<\/td>\n<td>99<\/td>\n<td>held-out benchmark, deliberately harder<\/td>\n<\/tr>\n<tr>\n<td><code>eval<\/code><\/td>\n<td>144<\/td>\n<td>16<\/td>\n<td>74<\/td>\n<td>54<\/td>\n<td>quick validation during a run<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>4. Data Structure Including Rich Metadata<\/h3>\n<p>Each row of the dataset comprehensively covers the information required to run and evaluate tasks.<\/p>\n<div class=\"lmw-table-scroll\" tabindex=\"0\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;\">\n<table style=\"width:max-content;min-width:100%;border-collapse:collapse;\">\n<thead>\n<tr>\n<th>Column<\/th>\n<th>Meaning<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>task_id<\/code>, <code>source_row_id<\/code><\/td>\n<td>identifiers<\/td>\n<\/tr>\n<tr>\n<td><code>question<\/code><\/td>\n<td>the question to answer<\/td>\n<\/tr>\n<tr>\n<td><code>answer<\/code><\/td>\n<td>the gold answer<\/td>\n<\/tr>\n<tr>\n<td><code>reward_mode<\/code>, <code>atol<\/code>, <code>rtol<\/code><\/td>\n<td>how to grade it: match type and numeric tolerances<\/td>\n<\/tr>\n<tr>\n<td><code>difficulty_level<\/code> (1\u20135), <code>difficulty_tier<\/code><\/td>\n<td>difficulty<\/td>\n<\/tr>\n<tr>\n<td><code>kaggle_dataset<\/code><\/td>\n<td>the source dataset<\/td>\n<\/tr>\n<tr>\n<td><code>hf_bucket<\/code>, <code>bucket_prefix<\/code>, <code>files<\/code><\/td>\n<td>where the input files live and what they are<\/td>\n<\/tr>\n<tr>\n<td><code>instruction<\/code><\/td>\n<td>the full agent prompt<\/td>\n<\/tr>\n<tr>\n<td><code>package_tier<\/code><\/td>\n<td>environment sizing hint<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>5. Deployment of Family Repositories According to Use Case<\/h3>\n<p>Rather than simply being provided as a basic dataset, SmolDataEnvs is composed of multiple repositories tailored to specific purposes, such as trajectory data for supervised fine-tuning (SFT) and the Harbor suite executable as a sandbox environment.<\/p>\n<div class=\"lmw-table-scroll\" tabindex=\"0\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;\">\n<table style=\"width:max-content;min-width:100%;border-collapse:collapse;\">\n<thead>\n<tr>\n<th>Repo<\/th>\n<th>What it is<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><a href=\"https:\/\/huggingface.co\/datasets\/FineEnvs\/SmolDataEnvs\"><code>SmolDataEnvs<\/code><\/a><\/td>\n<td>the tasks as plain rows, load it and prompt any model<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/huggingface.co\/datasets\/FineEnvs\/SmolDataEnvs-sft\"><code>SmolDataEnvs-sft<\/code><\/a><\/td>\n<td>4,677 verified agent trajectories, TRL-ready<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/huggingface.co\/datasets\/FineEnvs\/SmolDataEnvs-harbor-train\"><code>SmolDataEnvs-harbor-train<\/code><\/a><\/td>\n<td>5,000 tasks as Harbor environments<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/huggingface.co\/datasets\/FineEnvs\/SmolDataEnvs-harbor-test\"><code>SmolDataEnvs-harbor-test<\/code><\/a><\/td>\n<td>250 held-out, deliberately harder<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/huggingface.co\/datasets\/FineEnvs\/SmolDataEnvs-harbor-eval\"><code>SmolDataEnvs-harbor-eval<\/code><\/a><\/td>\n<td>144 for quick validation during a run<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2>Hardware Requirements<\/h2>\n<p>Regarding the use of this dataset and evaluation code, the prerequisites indicated in the materials are as follows:<\/p>\n<ul>\n<li><strong>Target Models<\/strong>: Primarily targets reinforcement learning and evaluation for small models (the description mentions an example of a 2B model).<\/li>\n<li><strong>License<\/strong>: Released under the MIT license.<\/li>\n<li><strong>Data Format<\/strong>: Provided in Parquet format, handling text and tabular data.<\/li>\n<li><strong>Required Software and Libraries<\/strong>: Based on a Python environment, requiring libraries such as <code>datasets<\/code> and <code>huggingface_hub<\/code>. Tag information lists <code>pandas<\/code>, <code>polars<\/code>, and <code>mlcroissant<\/code>.<\/li>\n<li><strong>Execution Environment Constraints<\/strong>: The dataset itself requires no runtime or specific execution framework (&#8220;no runtime, no framework required&#8221;) and can be loaded as independent data row by row. Note that the input tabular data files are distributed via the Hugging Face Bucket feature.<\/li>\n<\/ul>\n<h2>How to Reproduce Locally<\/h2>\n<p>Acquiring the dataset, downloading task tabular data, running the scoring script, and referencing the training script can be executed locally based on the published code.<\/p>\n<h3>1. Loading the Dataset<\/h3>\n<p>Using the <code>datasets<\/code> library, you can load specifying the split as follows:<\/p>\n<pre><code class=\"language-python\">from datasets import load_dataset\n\nds = load_dataset(&quot;FineEnvs\/SmolDataEnvs&quot;, split=&quot;test&quot;)\nrow = ds[0]\nprint(row[&quot;question&quot;], &quot;\u2192&quot;, row[&quot;answer&quot;], f&quot;({row['reward_mode']})&quot;)\n<\/code><\/pre>\n<h3>2. Acquiring Task Data Files<\/h3>\n<p>Since the input tabular files used in each task are stored on Hugging Face Buckets, they are retrieved using the <code>huggingface_hub<\/code> Bucket API.<\/p>\n<pre><code class=\"language-python\">from huggingface_hub import list_bucket_tree, download_bucket_files\n\nprefix = row[&quot;bucket_prefix&quot;].rstrip(&quot;\/&quot;) + &quot;\/&quot;\nitems = [i for i in list_bucket_tree(row[&quot;hf_bucket&quot;], prefix=prefix, recursive=True)\n         if getattr(i, &quot;type&quot;, None) == &quot;file&quot;]\ndownload_bucket_files(row[&quot;hf_bucket&quot;],\n                      files=[(i.path, &quot;input\/&quot; + i.path.split(&quot;\/&quot;)[-1]) for i in items])\n<\/code><\/pre>\n<h3>3. Grading Inference Results with the Grader<\/h3>\n<p>Download <code>grader.py<\/code> included in the repository, dynamically import it, and evaluate model outputs by matching them against the gold values. Tolerances (<code>atol<\/code>\/<code>rtol<\/code>) and comparison modes (<code>reward_mode<\/code>) are specified to be passed from the metadata within the dataset.<\/p>\n<pre><code class=\"language-python\">from huggingface_hub import hf_hub_download\nimport importlib.util, sys\n\npath = hf_hub_download(&quot;FineEnvs\/SmolDataEnvs&quot;, &quot;grader.py&quot;, repo_type=&quot;dataset&quot;)\nspec = importlib.util.spec_from_file_location(&quot;grader&quot;, path)\ngrader = importlib.util.module_from_spec(spec)\nsys.modules[&quot;grader&quot;] = grader          # Required for internal dataclass behavior\nspec.loader.exec_module(grader)\n\nr = grader.grade(row[&quot;answer&quot;], my_prediction, reward_mode=row[&quot;reward_mode&quot;],\n                 abs_tol=row[&quot;atol&quot;], rel_tol=row[&quot;rtol&quot;])\nprint(r.reward, r.method)   # 1.0 exact | 0.0 miss\n<\/code><\/pre>\n<h3>4. Training Environment and Peripheral Repositories<\/h3>\n<p>Training scripts and notebooks are published as single-file scripts on GitHub at <a href=\"https:\/\/github.com\/adithya-s-k\/FineEnvs\/tree\/main\/04-smoldataenvs\">FineEnvs\/04-smoldataenvs<\/a>, formatted to be passed and executed on HF Jobs or similar platforms. Additionally, as purpose-specific derivative repositories, TRL-compatible agent trajectory data <a href=\"https:\/\/huggingface.co\/datasets\/FineEnvs\/SmolDataEnvs-sft\"><code>SmolDataEnvs-sft<\/code><\/a> and Harbor suites for sandbox environments (<a href=\"https:\/\/huggingface.co\/datasets\/FineEnvs\/SmolDataEnvs-harbor-train\"><code>SmolDataEnvs-harbor-train<\/code><\/a>, <a href=\"https:\/\/huggingface.co\/datasets\/FineEnvs\/SmolDataEnvs-harbor-test\"><code>SmolDataEnvs-harbor-test<\/code><\/a>, <a href=\"https:\/\/huggingface.co\/datasets\/FineEnvs\/SmolDataEnvs-harbor-eval\"><code>SmolDataEnvs-harbor-eval<\/code><\/a>) are available.<\/p>\n<h2>What the Materials Do Not Cover<\/h2>\n<ul>\n<li><strong>Details of models used in verification experiments<\/strong>: Regarding the 2B model mentioned in the explanation as &#8220;A 2B model on these tasks,&#8221; the specific base model name or model family is not explicitly stated.<\/li>\n<li><strong>Specific numerical figures of experimental results<\/strong>: Specific numerical data such as achieved scores or performance differences for the two training runs executed with shuffled order and difficulty-curriculum order (&#8220;Two runs over the same 5,000 tasks&#8221;) are not documented in the materials.<\/li>\n<li><strong>Names of agent models used for task verification<\/strong>: The specific model names or system prompt configurations of the &#8220;strong agent models&#8221; used to verify task answerability during data extraction are not disclosed.<\/li>\n<\/ul>\n<p><!-- lmw:related --><\/p>\n<h2>Related Articles<\/h2>\n<ul>\n<li><a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/2026\/09\/27\/xiaomimimo-agentic-rl-training-environment\/\">XiaomiMiMo Releases Agentic RL Training Environment and Dataset<\/a><\/li>\n<\/ul>\n<p><!-- \/lmw:related --><\/p>\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/huggingface.co\/datasets\/FineEnvs\/SmolDataEnvs\">FineEnvs\/SmolDataEnvs (Hugging Face Datasets)<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/adithya-s-k\/FineEnvs\/tree\/main\/04-smoldataenvs\">FineEnvs\/04-smoldataenvs (GitHub)<\/a><\/li>\n<li><a href=\"https:\/\/huggingface.co\/datasets\/FineEnvs\/SmolDataEnvs-sft\">FineEnvs\/SmolDataEnvs-sft (Hugging Face Datasets)<\/a><\/li>\n<li><a href=\"https:\/\/huggingface.co\/datasets\/FineEnvs\/SmolDataEnvs-harbor-train\">FineEnvs\/SmolDataEnvs-harbor-train (Hugging Face Datasets)<\/a><\/li>\n<li><a href=\"https:\/\/huggingface.co\/datasets\/FineEnvs\/SmolDataEnvs-harbor-test\">FineEnvs\/SmolDataEnvs-harbor-test (Hugging Face Datasets)<\/a><\/li>\n<li><a href=\"https:\/\/huggingface.co\/datasets\/FineEnvs\/SmolDataEnvs-harbor-eval\">FineEnvs\/SmolDataEnvs-harbor-eval (Hugging Face Datasets)<\/a><\/li>\n<li><a href=\"https:\/\/huggingface.co\/datasets\/jupyter-agent\/jupyter-agent-dataset\">jupyter-agent dataset (Hugging Face Datasets)<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Explore SmolDataEnvs, a dataset with 5.5K+ RL tasks for hill-climbing optimization of small models in code and data science.<\/p>\n","protected":false},"author":1,"featured_media":4615,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1528],"tags":[2355,2357,590,2359,2361,1547],"class_list":["post-4616","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-reports","tag-dataset-en","tag-fineenvs-en","tag-python-en","tag-rl-en","tag-smoldataenvs-en","tag-verified"],"lang":"en","translations":{"en":4616,"ja":4614},"_links":{"self":[{"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/posts\/4616","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/comments?post=4616"}],"version-history":[{"count":1,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/posts\/4616\/revisions"}],"predecessor-version":[{"id":5936,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/posts\/4616\/revisions\/5936"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/media\/4615"}],"wp:attachment":[{"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/media?parent=4616"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/categories?post=4616"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/tags?post=4616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}