cairn-pack-dataset-prep 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cairn_pack_dataset_prep-0.1.0/.gitignore +11 -0
- cairn_pack_dataset_prep-0.1.0/LICENSE +202 -0
- cairn_pack_dataset_prep-0.1.0/NOTICE +12 -0
- cairn_pack_dataset_prep-0.1.0/PKG-INFO +108 -0
- cairn_pack_dataset_prep-0.1.0/README.md +88 -0
- cairn_pack_dataset_prep-0.1.0/__init__.py +9 -0
- cairn_pack_dataset_prep-0.1.0/data/sample-ifc.jsonl +200 -0
- cairn_pack_dataset_prep-0.1.0/flows/prepare.yaml +74 -0
- cairn_pack_dataset_prep-0.1.0/pack.toml +28 -0
- cairn_pack_dataset_prep-0.1.0/pipelines/prepare.yaml +104 -0
- cairn_pack_dataset_prep-0.1.0/presets/ifc-bim-alpaca.yaml +46 -0
- cairn_pack_dataset_prep-0.1.0/pyproject.toml +57 -0
- cairn_pack_dataset_prep-0.1.0/tests/test_prepare.py +144 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
6
|
+
|
|
7
|
+
1. Definitions.
|
|
8
|
+
|
|
9
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
10
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
11
|
+
|
|
12
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
13
|
+
the copyright owner that is granting the License.
|
|
14
|
+
|
|
15
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
16
|
+
other entities that control, are controlled by, or are under common
|
|
17
|
+
control with that entity. For the purposes of this definition,
|
|
18
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
19
|
+
direction or management of such entity, whether by contract or
|
|
20
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
21
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
22
|
+
|
|
23
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
24
|
+
exercising permissions granted by this License.
|
|
25
|
+
|
|
26
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
27
|
+
including but not limited to software source code, documentation
|
|
28
|
+
source, and configuration files.
|
|
29
|
+
|
|
30
|
+
"Object" form shall mean any form resulting from mechanical
|
|
31
|
+
transformation or translation of a Source form, including but
|
|
32
|
+
not limited to compiled object code, generated documentation,
|
|
33
|
+
and conversions to other media types.
|
|
34
|
+
|
|
35
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
36
|
+
Object form, made available under the License, as indicated by a
|
|
37
|
+
copyright notice that is included in or attached to the work
|
|
38
|
+
(an example is provided in the Appendix below).
|
|
39
|
+
|
|
40
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
41
|
+
form, that is based on (or derived from) the Work and for which the
|
|
42
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
43
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
44
|
+
of this License, Derivative Works shall not include works that remain
|
|
45
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
46
|
+
the Work and Derivative Works thereof.
|
|
47
|
+
|
|
48
|
+
"Contribution" shall mean any work of authorship, including
|
|
49
|
+
the original version of the Work and any modifications or additions
|
|
50
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
51
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
52
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
53
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
54
|
+
means any form of electronic, verbal, or written communication sent
|
|
55
|
+
to the Licensor or its representatives, including but not limited to
|
|
56
|
+
communication on electronic mailing lists, source code control systems,
|
|
57
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
58
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
59
|
+
excluding communication that is conspicuously marked or otherwise
|
|
60
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
61
|
+
|
|
62
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
63
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
64
|
+
subsequently incorporated within the Work.
|
|
65
|
+
|
|
66
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
67
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
68
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
69
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
70
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
71
|
+
Work and such Derivative Works in Source or Object form.
|
|
72
|
+
|
|
73
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
74
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
75
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
76
|
+
(except as stated in this section) patent license to make, have made,
|
|
77
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
78
|
+
where such license applies only to those patent claims licensable
|
|
79
|
+
by such Contributor that are necessarily infringed by their
|
|
80
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
81
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
82
|
+
institute patent litigation against any entity (including a
|
|
83
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
84
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
85
|
+
or contributory patent infringement, then any patent licenses
|
|
86
|
+
granted to You under this License for that Work shall terminate
|
|
87
|
+
as of the date such litigation is filed.
|
|
88
|
+
|
|
89
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
90
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
91
|
+
modifications, and in Source or Object form, provided that You
|
|
92
|
+
meet the following conditions:
|
|
93
|
+
|
|
94
|
+
(a) You must give any other recipients of the Work or
|
|
95
|
+
Derivative Works a copy of this License; and
|
|
96
|
+
|
|
97
|
+
(b) You must cause any modified files to carry prominent notices
|
|
98
|
+
stating that You changed the files; and
|
|
99
|
+
|
|
100
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
101
|
+
that You distribute, all copyright, patent, trademark, and
|
|
102
|
+
attribution notices from the Source form of the Work,
|
|
103
|
+
excluding those notices that do not pertain to any part of
|
|
104
|
+
the Derivative Works; and
|
|
105
|
+
|
|
106
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
107
|
+
distribution, then any Derivative Works that You distribute must
|
|
108
|
+
include a readable copy of the attribution notices contained
|
|
109
|
+
within such NOTICE file, excluding those notices that do not
|
|
110
|
+
pertain to any part of the Derivative Works, in at least one
|
|
111
|
+
of the following places: within a NOTICE text file distributed
|
|
112
|
+
as part of the Derivative Works; within the Source form or
|
|
113
|
+
documentation, if provided along with the Derivative Works; or,
|
|
114
|
+
within a display generated by the Derivative Works, if and
|
|
115
|
+
wherever such third-party notices normally appear. The contents
|
|
116
|
+
of the NOTICE file are for informational purposes only and
|
|
117
|
+
do not modify the License. You may add Your own attribution
|
|
118
|
+
notices within Derivative Works that You distribute, alongside
|
|
119
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
120
|
+
that such additional attribution notices cannot be construed
|
|
121
|
+
as modifying the License.
|
|
122
|
+
|
|
123
|
+
You may add Your own copyright statement to Your modifications and
|
|
124
|
+
may provide additional or different license terms and conditions
|
|
125
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
126
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
127
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
128
|
+
the conditions stated in this License.
|
|
129
|
+
|
|
130
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
131
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
132
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
133
|
+
this License, without any additional terms or conditions.
|
|
134
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
135
|
+
the terms of any separate license agreement you may have executed
|
|
136
|
+
with Licensor regarding such Contributions.
|
|
137
|
+
|
|
138
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
139
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
140
|
+
except as required for reasonable and customary use in describing the
|
|
141
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
142
|
+
|
|
143
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
144
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
145
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
146
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
147
|
+
implied, including, without limitation, any warranties or conditions
|
|
148
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
149
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
150
|
+
appropriateness of using or redistributing the Work and assume any
|
|
151
|
+
risks associated with Your exercise of permissions under this License.
|
|
152
|
+
|
|
153
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
154
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
155
|
+
unless required by applicable law (such as deliberate and grossly
|
|
156
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
157
|
+
liable to You for damages, including any direct, indirect, special,
|
|
158
|
+
incidental, or consequential damages of any character arising as a
|
|
159
|
+
result of this License or out of the use or inability to use the
|
|
160
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
161
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
162
|
+
other commercial damages or losses), even if such Contributor
|
|
163
|
+
has been advised of the possibility of such damages.
|
|
164
|
+
|
|
165
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
166
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
167
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
168
|
+
or other liability obligations and/or rights consistent with this
|
|
169
|
+
License. However, in accepting such obligations, You may act only
|
|
170
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
171
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
172
|
+
defend, and hold each Contributor harmless for any liability
|
|
173
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
174
|
+
of your accepting any such warranty or additional liability.
|
|
175
|
+
|
|
176
|
+
END OF TERMS AND CONDITIONS
|
|
177
|
+
|
|
178
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
179
|
+
|
|
180
|
+
To apply the Apache License to your work, attach the following
|
|
181
|
+
boilerplate notice, with the fields enclosed by brackets "{}"
|
|
182
|
+
replaced with your own identifying information. (Don't include
|
|
183
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
184
|
+
comment syntax for the file format. We also recommend that a
|
|
185
|
+
file or class name and description of purpose be included on the
|
|
186
|
+
same "printed page" as the copyright notice for easier
|
|
187
|
+
identification within third-party archives.
|
|
188
|
+
|
|
189
|
+
Copyright 2026 The cairn Authors
|
|
190
|
+
|
|
191
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
|
+
you may not use this file except in compliance with the License.
|
|
193
|
+
You may obtain a copy of the License at
|
|
194
|
+
|
|
195
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
196
|
+
|
|
197
|
+
Unless required by applicable law or agreed to in writing, software
|
|
198
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
199
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
200
|
+
See the License for the specific language governing permissions and
|
|
201
|
+
limitations under the License.
|
|
202
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
cairn-pack-dataset-prep
|
|
2
|
+
Copyright 2026 The cairn Authors
|
|
3
|
+
|
|
4
|
+
This package is part of the cairn project (https://cairndev.sh,
|
|
5
|
+
source: https://github.com/cairndev-sh/cairn-extensions) and is licensed under the Apache
|
|
6
|
+
License, Version 2.0. A copy of the License is in the LICENSE file
|
|
7
|
+
distributed with this package, or at:
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Third-party dependencies are licensed under their own terms; see each
|
|
12
|
+
package's metadata for details.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: cairn-pack-dataset-prep
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: cairn domain pack: prepare a dataset once into registered train, val and test versions.
|
|
5
|
+
Project-URL: Homepage, https://cairndev.sh
|
|
6
|
+
Project-URL: Source, https://github.com/cairndev-sh/cairn-extensions
|
|
7
|
+
Project-URL: Issues, https://github.com/cairndev-sh/cairn-extensions/issues
|
|
8
|
+
Author: cairn maintainers
|
|
9
|
+
License-Expression: Apache-2.0
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
License-File: NOTICE
|
|
12
|
+
Requires-Python: >=3.12
|
|
13
|
+
Requires-Dist: cairn-operator-dataset-checks<0.2,>=0.1
|
|
14
|
+
Requires-Dist: cairndev<0.4,>=0.2.1
|
|
15
|
+
Provides-Extra: all
|
|
16
|
+
Requires-Dist: cairn-operator-dataset-checks[minhash,tokenizers]<0.2,>=0.1; extra == 'all'
|
|
17
|
+
Provides-Extra: test
|
|
18
|
+
Requires-Dist: moto[s3]>=5; extra == 'test'
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
|
|
21
|
+
# cairn-pack-dataset-prep
|
|
22
|
+
|
|
23
|
+
Prepare a dataset once for [cairn](https://github.com/cairndev-sh/cairn): pin the source, audit
|
|
24
|
+
it, split it by group and register frozen `train`, `val` and `test` versions with their roles. A
|
|
25
|
+
fine-tune then reads the same three versions for its baseline, its validation and its one-time
|
|
26
|
+
test comparison, and cairn's holdout door refuses a training run that would meet the test set.
|
|
27
|
+
The fine-tune pack (`cairn-pack-finetune`) accepts these versions only.
|
|
28
|
+
|
|
29
|
+
A domain pack: YAML and a sample, no code. Every stage comes from
|
|
30
|
+
[`cairn-operator-dataset-checks`](../../packages/cairn-operator-dataset-checks).
|
|
31
|
+
|
|
32
|
+
## The `prepare` pipeline
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
source-ok ⏸ → prepare (one data leg) → format → data-ok
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
- **`source-ok`:** a person confirms the source, its revision and the name the versions are
|
|
39
|
+
registered under, before anything is written.
|
|
40
|
+
- **`prepare`:** the stages in [`flows/prepare.yaml`](flows/prepare.yaml):
|
|
41
|
+
1. `ingest.normalize`: reads the source; a Hub dataset is loaded at `revision`.
|
|
42
|
+
2. `dedup.exact`: drops exact duplicates.
|
|
43
|
+
3. `fields.derive`: labels for a dataset that has none, for example a topic or a template
|
|
44
|
+
family.
|
|
45
|
+
4. `dedup.near`: drops near duplicates, on the same text and 5-word shingles the holdout door
|
|
46
|
+
compares, so no near-duplicate pair can end up split between train and test. Needs the
|
|
47
|
+
`[all]` extra; skipped, with a note, without it.
|
|
48
|
+
5. `profile.tokens`: prompt+response lengths against `max_seq_len`.
|
|
49
|
+
6. `profile.fields`: topic counts, and group sizes.
|
|
50
|
+
7. `export.jsonl`: the cleaned corpus.
|
|
51
|
+
8. `split`: group-aware, and registers `<register>-train`, `-val` and `-test` with roles
|
|
52
|
+
training, validation and test.
|
|
53
|
+
9. `dataset.manifest`: source, revision and commit, hashes, rows, fields, licence and
|
|
54
|
+
citation, and the fetch time.
|
|
55
|
+
|
|
56
|
+
Each registered version gets its intake verdict.
|
|
57
|
+
- **`format`:** checks every example's structure against TRL and Unsloth.
|
|
58
|
+
- **`data-ok`:** stops the pipeline when a version came back blocked or invalid, or an example
|
|
59
|
+
is malformed.
|
|
60
|
+
|
|
61
|
+
The record carries stats, hashes, counts and version ids, never row content. A template family
|
|
62
|
+
is prompt text, so it is reported by group size only.
|
|
63
|
+
|
|
64
|
+
## Run it
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pip install cairn-pack-dataset-prep # the pipeline; near dedup and tokenizers: [all]
|
|
68
|
+
cairn remote presets dataset-prep/prepare # the shipped presets
|
|
69
|
+
cairn remote launch dataset-prep/prepare --preset ifc-bim-alpaca --watch
|
|
70
|
+
cairn remote advance <pipeline-id> source-ok # a person confirms the source
|
|
71
|
+
cairn remote findings <pipeline-id> # rows in, duplicates dropped, lengths, the three versions
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
The package publishes to PyPI soon (cairn-extensions#10). Until then, install it from a checkout
|
|
75
|
+
of this repository, with the operator pack and contract wheels it needs:
|
|
76
|
+
`pip install ./packages/cairn-contracts-dataset ./packages/cairn-contracts-dataset-stages
|
|
77
|
+
'./packages/cairn-operator-dataset-checks[minhash,tokenizers]' ./packs/cairn-pack-dataset-prep`.
|
|
78
|
+
Runs need a durable store (`CAIRN_STORAGE`) to survive a restart, as every pipeline does; the
|
|
79
|
+
`cairn-pack-finetune` README's "Run it" covers the control plane end to end.
|
|
80
|
+
|
|
81
|
+
Any dataset: `-i path=<hub id | file | s3://…> -i register=<name>`, plus `-i revision=<commit>`
|
|
82
|
+
for a Hub source. Add `group_by`, `derive`, `topic_fields` and `group_fields` when the rows carry,
|
|
83
|
+
or can be given, a group.
|
|
84
|
+
|
|
85
|
+
**The versions live in S3.** Registering them needs the s3 artifact store: `-i store=s3`, or a
|
|
86
|
+
profile with `artifact_store = "s3"` (as `cairn-pack-finetune`'s `finetune-ssh` has), plus
|
|
87
|
+
`CAIRN_ARTIFACT_S3_BUCKET` (`CAIRN_ARTIFACT_S3_PREFIX` optional, `CAIRN_ARTIFACT_S3_ENDPOINT` for
|
|
88
|
+
MinIO or another S3-compatible store). With the local store the split refuses to register:
|
|
89
|
+
its files sit in the leg's temporary workdir, which a reboot deletes and another machine cannot
|
|
90
|
+
read.
|
|
91
|
+
|
|
92
|
+
## Presets
|
|
93
|
+
|
|
94
|
+
| Preset | What it prepares |
|
|
95
|
+
|---|---|
|
|
96
|
+
| `ifc-bim-alpaca` | `Dietmar2020/ifc-bim-high-quality-alpaca` at a pinned commit, 90/5/5. `topic` is the first building element the answer defines and `family` is the request with numbers and names replaced; the split groups by `family`. Lengths use the `Qwen/Qwen3-4B-Base` tokenizer against 2048. |
|
|
97
|
+
|
|
98
|
+
The topic is matched with a regular expression, not parsed. An IFC parse belongs to the IFC
|
|
99
|
+
validator (cairn-extensions#12).
|
|
100
|
+
|
|
101
|
+
## Support
|
|
102
|
+
|
|
103
|
+
| Path | Status | Evidence | Proven on `cairndev` |
|
|
104
|
+
|---|---|---|---|
|
|
105
|
+
| `prepare` on the builtin data engine, s3 store | EXPERIMENTAL | `tests/test_prepare.py`: the pack's flow, the core runner and registration in process, on the 200-row sample and a mocked S3 bucket | 0.2.1 (the released wheel from PyPI: a local run and CI's `scripts/test_wheels.sh`) |
|
|
106
|
+
| `prepare` on a Hub source with `revision`, through `cairn remote launch` | not yet | the qualification run, cairn-extensions#9 | not yet |
|
|
107
|
+
|
|
108
|
+
Apache-2.0 — see [`LICENSE`](LICENSE).
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# cairn-pack-dataset-prep
|
|
2
|
+
|
|
3
|
+
Prepare a dataset once for [cairn](https://github.com/cairndev-sh/cairn): pin the source, audit
|
|
4
|
+
it, split it by group and register frozen `train`, `val` and `test` versions with their roles. A
|
|
5
|
+
fine-tune then reads the same three versions for its baseline, its validation and its one-time
|
|
6
|
+
test comparison, and cairn's holdout door refuses a training run that would meet the test set.
|
|
7
|
+
The fine-tune pack (`cairn-pack-finetune`) accepts these versions only.
|
|
8
|
+
|
|
9
|
+
A domain pack: YAML and a sample, no code. Every stage comes from
|
|
10
|
+
[`cairn-operator-dataset-checks`](../../packages/cairn-operator-dataset-checks).
|
|
11
|
+
|
|
12
|
+
## The `prepare` pipeline
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
source-ok ⏸ → prepare (one data leg) → format → data-ok
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
- **`source-ok`:** a person confirms the source, its revision and the name the versions are
|
|
19
|
+
registered under, before anything is written.
|
|
20
|
+
- **`prepare`:** the stages in [`flows/prepare.yaml`](flows/prepare.yaml):
|
|
21
|
+
1. `ingest.normalize`: reads the source; a Hub dataset is loaded at `revision`.
|
|
22
|
+
2. `dedup.exact`: drops exact duplicates.
|
|
23
|
+
3. `fields.derive`: labels for a dataset that has none, for example a topic or a template
|
|
24
|
+
family.
|
|
25
|
+
4. `dedup.near`: drops near duplicates, on the same text and 5-word shingles the holdout door
|
|
26
|
+
compares, so no near-duplicate pair can end up split between train and test. Needs the
|
|
27
|
+
`[all]` extra; skipped, with a note, without it.
|
|
28
|
+
5. `profile.tokens`: prompt+response lengths against `max_seq_len`.
|
|
29
|
+
6. `profile.fields`: topic counts, and group sizes.
|
|
30
|
+
7. `export.jsonl`: the cleaned corpus.
|
|
31
|
+
8. `split`: group-aware, and registers `<register>-train`, `-val` and `-test` with roles
|
|
32
|
+
training, validation and test.
|
|
33
|
+
9. `dataset.manifest`: source, revision and commit, hashes, rows, fields, licence and
|
|
34
|
+
citation, and the fetch time.
|
|
35
|
+
|
|
36
|
+
Each registered version gets its intake verdict.
|
|
37
|
+
- **`format`:** checks every example's structure against TRL and Unsloth.
|
|
38
|
+
- **`data-ok`:** stops the pipeline when a version came back blocked or invalid, or an example
|
|
39
|
+
is malformed.
|
|
40
|
+
|
|
41
|
+
The record carries stats, hashes, counts and version ids, never row content. A template family
|
|
42
|
+
is prompt text, so it is reported by group size only.
|
|
43
|
+
|
|
44
|
+
## Run it
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
pip install cairn-pack-dataset-prep # the pipeline; near dedup and tokenizers: [all]
|
|
48
|
+
cairn remote presets dataset-prep/prepare # the shipped presets
|
|
49
|
+
cairn remote launch dataset-prep/prepare --preset ifc-bim-alpaca --watch
|
|
50
|
+
cairn remote advance <pipeline-id> source-ok # a person confirms the source
|
|
51
|
+
cairn remote findings <pipeline-id> # rows in, duplicates dropped, lengths, the three versions
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The package publishes to PyPI soon (cairn-extensions#10). Until then, install it from a checkout
|
|
55
|
+
of this repository, with the operator pack and contract wheels it needs:
|
|
56
|
+
`pip install ./packages/cairn-contracts-dataset ./packages/cairn-contracts-dataset-stages
|
|
57
|
+
'./packages/cairn-operator-dataset-checks[minhash,tokenizers]' ./packs/cairn-pack-dataset-prep`.
|
|
58
|
+
Runs need a durable store (`CAIRN_STORAGE`) to survive a restart, as every pipeline does; the
|
|
59
|
+
`cairn-pack-finetune` README's "Run it" covers the control plane end to end.
|
|
60
|
+
|
|
61
|
+
Any dataset: `-i path=<hub id | file | s3://…> -i register=<name>`, plus `-i revision=<commit>`
|
|
62
|
+
for a Hub source. Add `group_by`, `derive`, `topic_fields` and `group_fields` when the rows carry,
|
|
63
|
+
or can be given, a group.
|
|
64
|
+
|
|
65
|
+
**The versions live in S3.** Registering them needs the s3 artifact store: `-i store=s3`, or a
|
|
66
|
+
profile with `artifact_store = "s3"` (as `cairn-pack-finetune`'s `finetune-ssh` has), plus
|
|
67
|
+
`CAIRN_ARTIFACT_S3_BUCKET` (`CAIRN_ARTIFACT_S3_PREFIX` optional, `CAIRN_ARTIFACT_S3_ENDPOINT` for
|
|
68
|
+
MinIO or another S3-compatible store). With the local store the split refuses to register:
|
|
69
|
+
its files sit in the leg's temporary workdir, which a reboot deletes and another machine cannot
|
|
70
|
+
read.
|
|
71
|
+
|
|
72
|
+
## Presets
|
|
73
|
+
|
|
74
|
+
| Preset | What it prepares |
|
|
75
|
+
|---|---|
|
|
76
|
+
| `ifc-bim-alpaca` | `Dietmar2020/ifc-bim-high-quality-alpaca` at a pinned commit, 90/5/5. `topic` is the first building element the answer defines and `family` is the request with numbers and names replaced; the split groups by `family`. Lengths use the `Qwen/Qwen3-4B-Base` tokenizer against 2048. |
|
|
77
|
+
|
|
78
|
+
The topic is matched with a regular expression, not parsed. An IFC parse belongs to the IFC
|
|
79
|
+
validator (cairn-extensions#12).
|
|
80
|
+
|
|
81
|
+
## Support
|
|
82
|
+
|
|
83
|
+
| Path | Status | Evidence | Proven on `cairndev` |
|
|
84
|
+
|---|---|---|---|
|
|
85
|
+
| `prepare` on the builtin data engine, s3 store | EXPERIMENTAL | `tests/test_prepare.py`: the pack's flow, the core runner and registration in process, on the 200-row sample and a mocked S3 bucket | 0.2.1 (the released wheel from PyPI: a local run and CI's `scripts/test_wheels.sh`) |
|
|
86
|
+
| `prepare` on a Hub source with `revision`, through `cairn remote launch` | not yet | the qualification run, cairn-extensions#9 | not yet |
|
|
87
|
+
|
|
88
|
+
Apache-2.0 — see [`LICENSE`](LICENSE).
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"""dataset-prep — prepare a dataset once into registered train / val / test versions
|
|
2
|
+
(cairn-extensions#16). Data only; this shim builds the Pack from the ``pack.toml`` beside it."""
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from cairn.core.pack import Pack
|
|
6
|
+
|
|
7
|
+
pack = Pack.from_manifest(__file__)
|
|
8
|
+
|
|
9
|
+
__all__ = ["pack"]
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 200mm thick, 2700mm high and 6000mm long.", "output": "#1=IFCPROJECT('p000',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e000',$,'shear wall',$,$,#20,#30,$);"}
|
|
2
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 101mm thick on level 'Core A'.", "output": "#1=IFCPROJECT('p001',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e001',$,'floor slab',$,$,#20,#30,$);"}
|
|
3
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 302mm with a 2400mm deep section.", "output": "#1=IFCPROJECT('p002',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e002',$,'steel beam',$,$,#20,#30,$);"}
|
|
4
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 103mm square and 3600mm tall named 'Level 1'.", "output": "#1=IFCPROJECT('p003',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e003',$,'concrete column',$,$,#20,#30,$);"}
|
|
5
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 154mm wide and 2400mm high in wall 'Level 1'.", "output": "#1=IFCPROJECT('p004',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e004',$,'single door',$,$,#20,#30,$);"}
|
|
6
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 305mm by 2400mm with a 1200mm sill.", "output": "#1=IFCPROJECT('p005',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e005',$,'window',$,$,#20,#30,$);"}
|
|
7
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 306mm by 2400mm.", "output": "#1=IFCPROJECT('p006',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e006',$,'flat roof',$,$,#20,#30,$);"}
|
|
8
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 150 risers of 2400mm.", "output": "#1=IFCPROJECT('p007',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e007',$,'straight stair',$,$,#20,#30,$);"}
|
|
9
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 251mm thick, 2700mm high and 900mm long.", "output": "#1=IFCPROJECT('p008',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e008',$,'shear wall',$,$,#20,#30,$);"}
|
|
10
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 202mm thick on level 'North'.", "output": "#1=IFCPROJECT('p009',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e009',$,'floor slab',$,$,#20,#30,$);"}
|
|
11
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 303mm with a 2700mm deep section.", "output": "#1=IFCPROJECT('p010',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e010',$,'steel beam',$,$,#20,#30,$);"}
|
|
12
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 304mm square and 2400mm tall named 'North'.", "output": "#1=IFCPROJECT('p011',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e011',$,'concrete column',$,$,#20,#30,$);"}
|
|
13
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 155mm wide and 3600mm high in wall 'Core A'.", "output": "#1=IFCPROJECT('p012',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e012',$,'single door',$,$,#20,#30,$);"}
|
|
14
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 256mm by 3600mm with a 4000mm sill.", "output": "#1=IFCPROJECT('p013',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e013',$,'window',$,$,#20,#30,$);"}
|
|
15
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 150mm by 2700mm.", "output": "#1=IFCPROJECT('p014',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e014',$,'flat roof',$,$,#20,#30,$);"}
|
|
16
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 301 risers of 3000mm.", "output": "#1=IFCPROJECT('p015',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e015',$,'straight stair',$,$,#20,#30,$);"}
|
|
17
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 252mm thick, 3000mm high and 900mm long.", "output": "#1=IFCPROJECT('p016',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e016',$,'shear wall',$,$,#20,#30,$);"}
|
|
18
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 303mm thick on level 'Core A'.", "output": "#1=IFCPROJECT('p017',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e017',$,'floor slab',$,$,#20,#30,$);"}
|
|
19
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 154mm with a 3600mm deep section.", "output": "#1=IFCPROJECT('p018',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e018',$,'steel beam',$,$,#20,#30,$);"}
|
|
20
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 105mm square and 3000mm tall named 'East wing'.", "output": "#1=IFCPROJECT('p019',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e019',$,'concrete column',$,$,#20,#30,$);"}
|
|
21
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 206mm wide and 3600mm high in wall 'Level 1'.", "output": "#1=IFCPROJECT('p020',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e020',$,'single door',$,$,#20,#30,$);"}
|
|
22
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 100mm by 3000mm with a 6000mm sill.", "output": "#1=IFCPROJECT('p021',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e021',$,'window',$,$,#20,#30,$);"}
|
|
23
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 101mm by 2400mm.", "output": "#1=IFCPROJECT('p022',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e022',$,'flat roof',$,$,#20,#30,$);"}
|
|
24
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 302 risers of 3600mm.", "output": "#1=IFCPROJECT('p023',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e023',$,'straight stair',$,$,#20,#30,$);"}
|
|
25
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 253mm thick, 3000mm high and 900mm long.", "output": "#1=IFCPROJECT('p024',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e024',$,'shear wall',$,$,#20,#30,$);"}
|
|
26
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 204mm thick on level 'Grid B4'.", "output": "#1=IFCPROJECT('p025',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e025',$,'floor slab',$,$,#20,#30,$);"}
|
|
27
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 105mm with a 2700mm deep section.", "output": "#1=IFCPROJECT('p026',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e026',$,'steel beam',$,$,#20,#30,$);"}
|
|
28
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 156mm square and 3600mm tall named 'Grid B4'.", "output": "#1=IFCPROJECT('p027',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e027',$,'concrete column',$,$,#20,#30,$);"}
|
|
29
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 100mm wide and 2700mm high in wall 'Grid B4'.", "output": "#1=IFCPROJECT('p028',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e028',$,'single door',$,$,#20,#30,$);"}
|
|
30
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 301mm by 3000mm with a 1200mm sill.", "output": "#1=IFCPROJECT('p029',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e029',$,'window',$,$,#20,#30,$);"}
|
|
31
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 302mm by 3000mm.", "output": "#1=IFCPROJECT('p030',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e030',$,'flat roof',$,$,#20,#30,$);"}
|
|
32
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 253 risers of 2700mm.", "output": "#1=IFCPROJECT('p031',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e031',$,'straight stair',$,$,#20,#30,$);"}
|
|
33
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 154mm thick, 2700mm high and 1200mm long.", "output": "#1=IFCPROJECT('p032',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e032',$,'shear wall',$,$,#20,#30,$);"}
|
|
34
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 155mm thick on level 'North'.", "output": "#1=IFCPROJECT('p033',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e033',$,'floor slab',$,$,#20,#30,$);"}
|
|
35
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 156mm with a 3000mm deep section.", "output": "#1=IFCPROJECT('p034',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e034',$,'steel beam',$,$,#20,#30,$);"}
|
|
36
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 150mm square and 3600mm tall named 'North'.", "output": "#1=IFCPROJECT('p035',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e035',$,'concrete column',$,$,#20,#30,$);"}
|
|
37
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 301mm wide and 3000mm high in wall 'East wing'.", "output": "#1=IFCPROJECT('p036',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e036',$,'single door',$,$,#20,#30,$);"}
|
|
38
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 302mm by 2400mm with a 6000mm sill.", "output": "#1=IFCPROJECT('p037',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e037',$,'window',$,$,#20,#30,$);"}
|
|
39
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 303mm by 3600mm.", "output": "#1=IFCPROJECT('p038',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e038',$,'flat roof',$,$,#20,#30,$);"}
|
|
40
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 254 risers of 2400mm.", "output": "#1=IFCPROJECT('p039',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e039',$,'straight stair',$,$,#20,#30,$);"}
|
|
41
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 255mm thick, 2400mm high and 1200mm long.", "output": "#1=IFCPROJECT('p040',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e040',$,'shear wall',$,$,#20,#30,$);"}
|
|
42
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 156mm thick on level 'Level 1'.", "output": "#1=IFCPROJECT('p041',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e041',$,'floor slab',$,$,#20,#30,$);"}
|
|
43
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 200mm with a 2400mm deep section.", "output": "#1=IFCPROJECT('p042',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e042',$,'steel beam',$,$,#20,#30,$);"}
|
|
44
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 301mm square and 2700mm tall named 'Core A'.", "output": "#1=IFCPROJECT('p043',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e043',$,'concrete column',$,$,#20,#30,$);"}
|
|
45
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 302mm wide and 2400mm high in wall 'Level 2'.", "output": "#1=IFCPROJECT('p044',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e044',$,'single door',$,$,#20,#30,$);"}
|
|
46
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 303mm by 3600mm with a 1200mm sill.", "output": "#1=IFCPROJECT('p045',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e045',$,'window',$,$,#20,#30,$);"}
|
|
47
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 204mm by 3000mm.", "output": "#1=IFCPROJECT('p046',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e046',$,'flat roof',$,$,#20,#30,$);"}
|
|
48
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 105 risers of 2400mm.", "output": "#1=IFCPROJECT('p047',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e047',$,'straight stair',$,$,#20,#30,$);"}
|
|
49
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 256mm thick, 3600mm high and 4000mm long.", "output": "#1=IFCPROJECT('p048',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e048',$,'shear wall',$,$,#20,#30,$);"}
|
|
50
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 150mm thick on level 'East wing'.", "output": "#1=IFCPROJECT('p049',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e049',$,'floor slab',$,$,#20,#30,$);"}
|
|
51
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 201mm with a 3600mm deep section.", "output": "#1=IFCPROJECT('p050',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e050',$,'steel beam',$,$,#20,#30,$);"}
|
|
52
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 102mm square and 2700mm tall named 'Level 2'.", "output": "#1=IFCPROJECT('p051',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e051',$,'concrete column',$,$,#20,#30,$);"}
|
|
53
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 303mm wide and 2400mm high in wall 'East wing'.", "output": "#1=IFCPROJECT('p052',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e052',$,'single door',$,$,#20,#30,$);"}
|
|
54
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 104mm by 3000mm with a 4000mm sill.", "output": "#1=IFCPROJECT('p053',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e053',$,'window',$,$,#20,#30,$);"}
|
|
55
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 205mm by 2700mm.", "output": "#1=IFCPROJECT('p054',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e054',$,'flat roof',$,$,#20,#30,$);"}
|
|
56
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 156 risers of 2700mm.", "output": "#1=IFCPROJECT('p055',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e055',$,'straight stair',$,$,#20,#30,$);"}
|
|
57
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 150mm thick, 2700mm high and 6000mm long.", "output": "#1=IFCPROJECT('p056',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e056',$,'shear wall',$,$,#20,#30,$);"}
|
|
58
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 101mm thick on level 'Grid B4'.", "output": "#1=IFCPROJECT('p057',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e057',$,'floor slab',$,$,#20,#30,$);"}
|
|
59
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 202mm with a 2700mm deep section.", "output": "#1=IFCPROJECT('p058',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e058',$,'steel beam',$,$,#20,#30,$);"}
|
|
60
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 203mm square and 3000mm tall named 'Level 2'.", "output": "#1=IFCPROJECT('p059',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e059',$,'concrete column',$,$,#20,#30,$);"}
|
|
61
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 104mm wide and 2700mm high in wall 'Level 2'.", "output": "#1=IFCPROJECT('p060',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e060',$,'single door',$,$,#20,#30,$);"}
|
|
62
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 205mm by 2700mm with a 6000mm sill.", "output": "#1=IFCPROJECT('p061',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e061',$,'window',$,$,#20,#30,$);"}
|
|
63
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 306mm by 2400mm.", "output": "#1=IFCPROJECT('p062',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e062',$,'flat roof',$,$,#20,#30,$);"}
|
|
64
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 200 risers of 2400mm.", "output": "#1=IFCPROJECT('p063',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e063',$,'straight stair',$,$,#20,#30,$);"}
|
|
65
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 151mm thick, 3600mm high and 1200mm long.", "output": "#1=IFCPROJECT('p064',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e064',$,'shear wall',$,$,#20,#30,$);"}
|
|
66
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 202mm thick on level 'Grid B4'.", "output": "#1=IFCPROJECT('p065',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e065',$,'floor slab',$,$,#20,#30,$);"}
|
|
67
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 253mm with a 2400mm deep section.", "output": "#1=IFCPROJECT('p066',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e066',$,'steel beam',$,$,#20,#30,$);"}
|
|
68
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 154mm square and 2400mm tall named 'North'.", "output": "#1=IFCPROJECT('p067',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e067',$,'concrete column',$,$,#20,#30,$);"}
|
|
69
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 255mm wide and 2700mm high in wall 'East wing'.", "output": "#1=IFCPROJECT('p068',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e068',$,'single door',$,$,#20,#30,$);"}
|
|
70
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 206mm by 2700mm with a 1200mm sill.", "output": "#1=IFCPROJECT('p069',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e069',$,'window',$,$,#20,#30,$);"}
|
|
71
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 100mm by 2400mm.", "output": "#1=IFCPROJECT('p070',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e070',$,'flat roof',$,$,#20,#30,$);"}
|
|
72
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 151 risers of 2700mm.", "output": "#1=IFCPROJECT('p071',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e071',$,'straight stair',$,$,#20,#30,$);"}
|
|
73
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 152mm thick, 3000mm high and 1200mm long.", "output": "#1=IFCPROJECT('p072',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e072',$,'shear wall',$,$,#20,#30,$);"}
|
|
74
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 203mm thick on level 'Level 2'.", "output": "#1=IFCPROJECT('p073',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e073',$,'floor slab',$,$,#20,#30,$);"}
|
|
75
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 104mm with a 3000mm deep section.", "output": "#1=IFCPROJECT('p074',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e074',$,'steel beam',$,$,#20,#30,$);"}
|
|
76
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 305mm square and 3600mm tall named 'North'.", "output": "#1=IFCPROJECT('p075',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e075',$,'concrete column',$,$,#20,#30,$);"}
|
|
77
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 156mm wide and 2400mm high in wall 'Level 2'.", "output": "#1=IFCPROJECT('p076',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e076',$,'single door',$,$,#20,#30,$);"}
|
|
78
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 300mm by 2400mm with a 1200mm sill.", "output": "#1=IFCPROJECT('p077',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e077',$,'window',$,$,#20,#30,$);"}
|
|
79
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 151mm by 3600mm.", "output": "#1=IFCPROJECT('p078',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e078',$,'flat roof',$,$,#20,#30,$);"}
|
|
80
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 102 risers of 3000mm.", "output": "#1=IFCPROJECT('p079',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e079',$,'straight stair',$,$,#20,#30,$);"}
|
|
81
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 303mm thick, 2400mm high and 1200mm long.", "output": "#1=IFCPROJECT('p080',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e080',$,'shear wall',$,$,#20,#30,$);"}
|
|
82
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 204mm thick on level 'North'.", "output": "#1=IFCPROJECT('p081',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e081',$,'floor slab',$,$,#20,#30,$);"}
|
|
83
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 255mm with a 2400mm deep section.", "output": "#1=IFCPROJECT('p082',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e082',$,'steel beam',$,$,#20,#30,$);"}
|
|
84
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 206mm square and 2700mm tall named 'Grid B4'.", "output": "#1=IFCPROJECT('p083',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e083',$,'concrete column',$,$,#20,#30,$);"}
|
|
85
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 300mm wide and 3600mm high in wall 'East wing'.", "output": "#1=IFCPROJECT('p084',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e084',$,'single door',$,$,#20,#30,$);"}
|
|
86
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 301mm by 3000mm with a 1200mm sill.", "output": "#1=IFCPROJECT('p085',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e085',$,'window',$,$,#20,#30,$);"}
|
|
87
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 152mm by 3600mm.", "output": "#1=IFCPROJECT('p086',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e086',$,'flat roof',$,$,#20,#30,$);"}
|
|
88
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 253 risers of 3000mm.", "output": "#1=IFCPROJECT('p087',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e087',$,'straight stair',$,$,#20,#30,$);"}
|
|
89
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 154mm thick, 3600mm high and 900mm long.", "output": "#1=IFCPROJECT('p088',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e088',$,'shear wall',$,$,#20,#30,$);"}
|
|
90
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 205mm thick on level 'East wing'.", "output": "#1=IFCPROJECT('p089',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e089',$,'floor slab',$,$,#20,#30,$);"}
|
|
91
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 206mm with a 2700mm deep section.", "output": "#1=IFCPROJECT('p090',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e090',$,'steel beam',$,$,#20,#30,$);"}
|
|
92
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 250mm square and 2700mm tall named 'Grid B4'.", "output": "#1=IFCPROJECT('p091',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e091',$,'concrete column',$,$,#20,#30,$);"}
|
|
93
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 251mm wide and 2700mm high in wall 'Level 2'.", "output": "#1=IFCPROJECT('p092',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e092',$,'single door',$,$,#20,#30,$);"}
|
|
94
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 252mm by 3600mm with a 4000mm sill.", "output": "#1=IFCPROJECT('p093',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e093',$,'window',$,$,#20,#30,$);"}
|
|
95
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 153mm by 3000mm.", "output": "#1=IFCPROJECT('p094',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e094',$,'flat roof',$,$,#20,#30,$);"}
|
|
96
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 204 risers of 2400mm.", "output": "#1=IFCPROJECT('p095',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e095',$,'straight stair',$,$,#20,#30,$);"}
|
|
97
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 255mm thick, 3600mm high and 900mm long.", "output": "#1=IFCPROJECT('p096',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e096',$,'shear wall',$,$,#20,#30,$);"}
|
|
98
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 206mm thick on level 'Level 1'.", "output": "#1=IFCPROJECT('p097',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e097',$,'floor slab',$,$,#20,#30,$);"}
|
|
99
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 150mm with a 2400mm deep section.", "output": "#1=IFCPROJECT('p098',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e098',$,'steel beam',$,$,#20,#30,$);"}
|
|
100
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 201mm square and 2400mm tall named 'Core A'.", "output": "#1=IFCPROJECT('p099',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e099',$,'concrete column',$,$,#20,#30,$);"}
|
|
101
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 152mm wide and 3600mm high in wall 'Grid B4'.", "output": "#1=IFCPROJECT('p100',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e100',$,'single door',$,$,#20,#30,$);"}
|
|
102
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 153mm by 3600mm with a 4000mm sill.", "output": "#1=IFCPROJECT('p101',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e101',$,'window',$,$,#20,#30,$);"}
|
|
103
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 204mm by 2400mm.", "output": "#1=IFCPROJECT('p102',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e102',$,'flat roof',$,$,#20,#30,$);"}
|
|
104
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 105 risers of 3000mm.", "output": "#1=IFCPROJECT('p103',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e103',$,'straight stair',$,$,#20,#30,$);"}
|
|
105
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 106mm thick, 3000mm high and 900mm long.", "output": "#1=IFCPROJECT('p104',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e104',$,'shear wall',$,$,#20,#30,$);"}
|
|
106
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 150mm thick on level 'Level 1'.", "output": "#1=IFCPROJECT('p105',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e105',$,'floor slab',$,$,#20,#30,$);"}
|
|
107
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 251mm with a 2400mm deep section.", "output": "#1=IFCPROJECT('p106',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e106',$,'steel beam',$,$,#20,#30,$);"}
|
|
108
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 252mm square and 3000mm tall named 'Level 1'.", "output": "#1=IFCPROJECT('p107',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e107',$,'concrete column',$,$,#20,#30,$);"}
|
|
109
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 303mm wide and 2700mm high in wall 'Level 2'.", "output": "#1=IFCPROJECT('p108',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e108',$,'single door',$,$,#20,#30,$);"}
|
|
110
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 204mm by 2400mm with a 1200mm sill.", "output": "#1=IFCPROJECT('p109',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e109',$,'window',$,$,#20,#30,$);"}
|
|
111
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 205mm by 3000mm.", "output": "#1=IFCPROJECT('p110',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e110',$,'flat roof',$,$,#20,#30,$);"}
|
|
112
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 256 risers of 2700mm.", "output": "#1=IFCPROJECT('p111',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e111',$,'straight stair',$,$,#20,#30,$);"}
|
|
113
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 100mm thick, 3000mm high and 900mm long.", "output": "#1=IFCPROJECT('p112',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e112',$,'shear wall',$,$,#20,#30,$);"}
|
|
114
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 101mm thick on level 'Level 2'.", "output": "#1=IFCPROJECT('p113',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e113',$,'floor slab',$,$,#20,#30,$);"}
|
|
115
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 252mm with a 2400mm deep section.", "output": "#1=IFCPROJECT('p114',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e114',$,'steel beam',$,$,#20,#30,$);"}
|
|
116
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 253mm square and 3600mm tall named 'East wing'.", "output": "#1=IFCPROJECT('p115',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e115',$,'concrete column',$,$,#20,#30,$);"}
|
|
117
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 154mm wide and 2700mm high in wall 'Level 2'.", "output": "#1=IFCPROJECT('p116',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e116',$,'single door',$,$,#20,#30,$);"}
|
|
118
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 155mm by 3600mm with a 4000mm sill.", "output": "#1=IFCPROJECT('p117',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e117',$,'window',$,$,#20,#30,$);"}
|
|
119
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 156mm by 2400mm.", "output": "#1=IFCPROJECT('p118',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e118',$,'flat roof',$,$,#20,#30,$);"}
|
|
120
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 200 risers of 3600mm.", "output": "#1=IFCPROJECT('p119',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e119',$,'straight stair',$,$,#20,#30,$);"}
|
|
121
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 101mm thick, 3600mm high and 4000mm long.", "output": "#1=IFCPROJECT('p120',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e120',$,'shear wall',$,$,#20,#30,$);"}
|
|
122
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 152mm thick on level 'Grid B4'.", "output": "#1=IFCPROJECT('p121',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e121',$,'floor slab',$,$,#20,#30,$);"}
|
|
123
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 153mm with a 2700mm deep section.", "output": "#1=IFCPROJECT('p122',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e122',$,'steel beam',$,$,#20,#30,$);"}
|
|
124
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 104mm square and 3000mm tall named 'Core A'.", "output": "#1=IFCPROJECT('p123',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e123',$,'concrete column',$,$,#20,#30,$);"}
|
|
125
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 305mm wide and 3000mm high in wall 'Level 1'.", "output": "#1=IFCPROJECT('p124',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e124',$,'single door',$,$,#20,#30,$);"}
|
|
126
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 206mm by 2700mm with a 4000mm sill.", "output": "#1=IFCPROJECT('p125',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e125',$,'window',$,$,#20,#30,$);"}
|
|
127
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 100mm by 3000mm.", "output": "#1=IFCPROJECT('p126',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e126',$,'flat roof',$,$,#20,#30,$);"}
|
|
128
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 251 risers of 3000mm.", "output": "#1=IFCPROJECT('p127',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e127',$,'straight stair',$,$,#20,#30,$);"}
|
|
129
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 302mm thick, 2400mm high and 900mm long.", "output": "#1=IFCPROJECT('p128',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e128',$,'shear wall',$,$,#20,#30,$);"}
|
|
130
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 103mm thick on level 'North'.", "output": "#1=IFCPROJECT('p129',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e129',$,'floor slab',$,$,#20,#30,$);"}
|
|
131
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 104mm with a 3600mm deep section.", "output": "#1=IFCPROJECT('p130',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e130',$,'steel beam',$,$,#20,#30,$);"}
|
|
132
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 205mm square and 2700mm tall named 'North'.", "output": "#1=IFCPROJECT('p131',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e131',$,'concrete column',$,$,#20,#30,$);"}
|
|
133
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 306mm wide and 2700mm high in wall 'Core A'.", "output": "#1=IFCPROJECT('p132',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e132',$,'single door',$,$,#20,#30,$);"}
|
|
134
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 250mm by 2700mm with a 4000mm sill.", "output": "#1=IFCPROJECT('p133',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e133',$,'window',$,$,#20,#30,$);"}
|
|
135
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 301mm by 2700mm.", "output": "#1=IFCPROJECT('p134',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e134',$,'flat roof',$,$,#20,#30,$);"}
|
|
136
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 302 risers of 3600mm.", "output": "#1=IFCPROJECT('p135',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e135',$,'straight stair',$,$,#20,#30,$);"}
|
|
137
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 303mm thick, 2400mm high and 1200mm long.", "output": "#1=IFCPROJECT('p136',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e136',$,'shear wall',$,$,#20,#30,$);"}
|
|
138
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 104mm thick on level 'East wing'.", "output": "#1=IFCPROJECT('p137',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e137',$,'floor slab',$,$,#20,#30,$);"}
|
|
139
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 205mm with a 2400mm deep section.", "output": "#1=IFCPROJECT('p138',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e138',$,'steel beam',$,$,#20,#30,$);"}
|
|
140
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 306mm square and 2400mm tall named 'East wing'.", "output": "#1=IFCPROJECT('p139',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e139',$,'concrete column',$,$,#20,#30,$);"}
|
|
141
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 300mm wide and 2700mm high in wall 'Core A'.", "output": "#1=IFCPROJECT('p140',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e140',$,'single door',$,$,#20,#30,$);"}
|
|
142
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 101mm by 3600mm with a 900mm sill.", "output": "#1=IFCPROJECT('p141',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e141',$,'window',$,$,#20,#30,$);"}
|
|
143
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 302mm by 2400mm.", "output": "#1=IFCPROJECT('p142',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e142',$,'flat roof',$,$,#20,#30,$);"}
|
|
144
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 253 risers of 3000mm.", "output": "#1=IFCPROJECT('p143',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e143',$,'straight stair',$,$,#20,#30,$);"}
|
|
145
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 154mm thick, 2700mm high and 1200mm long.", "output": "#1=IFCPROJECT('p144',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e144',$,'shear wall',$,$,#20,#30,$);"}
|
|
146
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 255mm thick on level 'Level 1'.", "output": "#1=IFCPROJECT('p145',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e145',$,'floor slab',$,$,#20,#30,$);"}
|
|
147
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 256mm with a 3000mm deep section.", "output": "#1=IFCPROJECT('p146',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e146',$,'steel beam',$,$,#20,#30,$);"}
|
|
148
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 150mm square and 2400mm tall named 'Core A'.", "output": "#1=IFCPROJECT('p147',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e147',$,'concrete column',$,$,#20,#30,$);"}
|
|
149
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 201mm wide and 3000mm high in wall 'Level 1'.", "output": "#1=IFCPROJECT('p148',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e148',$,'single door',$,$,#20,#30,$);"}
|
|
150
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 252mm by 2400mm with a 6000mm sill.", "output": "#1=IFCPROJECT('p149',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e149',$,'window',$,$,#20,#30,$);"}
|
|
151
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 103mm by 2700mm.", "output": "#1=IFCPROJECT('p150',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e150',$,'flat roof',$,$,#20,#30,$);"}
|
|
152
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 304 risers of 3000mm.", "output": "#1=IFCPROJECT('p151',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e151',$,'straight stair',$,$,#20,#30,$);"}
|
|
153
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 255mm thick, 2400mm high and 1200mm long.", "output": "#1=IFCPROJECT('p152',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e152',$,'shear wall',$,$,#20,#30,$);"}
|
|
154
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 106mm thick on level 'Core A'.", "output": "#1=IFCPROJECT('p153',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e153',$,'floor slab',$,$,#20,#30,$);"}
|
|
155
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 250mm with a 2400mm deep section.", "output": "#1=IFCPROJECT('p154',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e154',$,'steel beam',$,$,#20,#30,$);"}
|
|
156
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 251mm square and 2700mm tall named 'Level 1'.", "output": "#1=IFCPROJECT('p155',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e155',$,'concrete column',$,$,#20,#30,$);"}
|
|
157
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 302mm wide and 2400mm high in wall 'East wing'.", "output": "#1=IFCPROJECT('p156',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e156',$,'single door',$,$,#20,#30,$);"}
|
|
158
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 303mm by 3000mm with a 4000mm sill.", "output": "#1=IFCPROJECT('p157',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e157',$,'window',$,$,#20,#30,$);"}
|
|
159
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 304mm by 3000mm.", "output": "#1=IFCPROJECT('p158',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e158',$,'flat roof',$,$,#20,#30,$);"}
|
|
160
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 205 risers of 2700mm.", "output": "#1=IFCPROJECT('p159',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e159',$,'straight stair',$,$,#20,#30,$);"}
|
|
161
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 256mm thick, 2400mm high and 1200mm long.", "output": "#1=IFCPROJECT('p160',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e160',$,'shear wall',$,$,#20,#30,$);"}
|
|
162
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 250mm thick on level 'Core A'.", "output": "#1=IFCPROJECT('p161',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e161',$,'floor slab',$,$,#20,#30,$);"}
|
|
163
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 151mm with a 3600mm deep section.", "output": "#1=IFCPROJECT('p162',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e162',$,'steel beam',$,$,#20,#30,$);"}
|
|
164
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 202mm square and 2400mm tall named 'Level 1'.", "output": "#1=IFCPROJECT('p163',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e163',$,'concrete column',$,$,#20,#30,$);"}
|
|
165
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 203mm wide and 3000mm high in wall 'Level 1'.", "output": "#1=IFCPROJECT('p164',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e164',$,'single door',$,$,#20,#30,$);"}
|
|
166
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 154mm by 2400mm with a 4000mm sill.", "output": "#1=IFCPROJECT('p165',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e165',$,'window',$,$,#20,#30,$);"}
|
|
167
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 205mm by 2400mm.", "output": "#1=IFCPROJECT('p166',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e166',$,'flat roof',$,$,#20,#30,$);"}
|
|
168
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 306 risers of 2400mm.", "output": "#1=IFCPROJECT('p167',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e167',$,'straight stair',$,$,#20,#30,$);"}
|
|
169
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 200mm thick, 2400mm high and 4000mm long.", "output": "#1=IFCPROJECT('p168',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e168',$,'shear wall',$,$,#20,#30,$);"}
|
|
170
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 101mm thick on level 'Level 2'.", "output": "#1=IFCPROJECT('p169',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e169',$,'floor slab',$,$,#20,#30,$);"}
|
|
171
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 202mm with a 3600mm deep section.", "output": "#1=IFCPROJECT('p170',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e170',$,'steel beam',$,$,#20,#30,$);"}
|
|
172
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 203mm square and 3600mm tall named 'East wing'.", "output": "#1=IFCPROJECT('p171',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e171',$,'concrete column',$,$,#20,#30,$);"}
|
|
173
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 254mm wide and 2700mm high in wall 'Level 1'.", "output": "#1=IFCPROJECT('p172',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e172',$,'single door',$,$,#20,#30,$);"}
|
|
174
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 255mm by 3600mm with a 1200mm sill.", "output": "#1=IFCPROJECT('p173',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e173',$,'window',$,$,#20,#30,$);"}
|
|
175
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 206mm by 3600mm.", "output": "#1=IFCPROJECT('p174',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e174',$,'flat roof',$,$,#20,#30,$);"}
|
|
176
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 150 risers of 2700mm.", "output": "#1=IFCPROJECT('p175',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e175',$,'straight stair',$,$,#20,#30,$);"}
|
|
177
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 201mm thick, 3000mm high and 4000mm long.", "output": "#1=IFCPROJECT('p176',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e176',$,'shear wall',$,$,#20,#30,$);"}
|
|
178
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 202mm thick on level 'Core A'.", "output": "#1=IFCPROJECT('p177',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e177',$,'floor slab',$,$,#20,#30,$);"}
|
|
179
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 253mm with a 3600mm deep section.", "output": "#1=IFCPROJECT('p178',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e178',$,'steel beam',$,$,#20,#30,$);"}
|
|
180
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 154mm square and 2400mm tall named 'North'.", "output": "#1=IFCPROJECT('p179',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e179',$,'concrete column',$,$,#20,#30,$);"}
|
|
181
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 255mm wide and 2700mm high in wall 'Core A'.", "output": "#1=IFCPROJECT('p180',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e180',$,'single door',$,$,#20,#30,$);"}
|
|
182
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 256mm by 3600mm with a 1200mm sill.", "output": "#1=IFCPROJECT('p181',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e181',$,'window',$,$,#20,#30,$);"}
|
|
183
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 150mm by 2700mm.", "output": "#1=IFCPROJECT('p182',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e182',$,'flat roof',$,$,#20,#30,$);"}
|
|
184
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 201 risers of 2400mm.", "output": "#1=IFCPROJECT('p183',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e183',$,'straight stair',$,$,#20,#30,$);"}
|
|
185
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 202mm thick, 3000mm high and 1200mm long.", "output": "#1=IFCPROJECT('p184',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e184',$,'shear wall',$,$,#20,#30,$);"}
|
|
186
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 253mm thick on level 'East wing'.", "output": "#1=IFCPROJECT('p185',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e185',$,'floor slab',$,$,#20,#30,$);"}
|
|
187
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 304mm with a 2700mm deep section.", "output": "#1=IFCPROJECT('p186',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e186',$,'steel beam',$,$,#20,#30,$);"}
|
|
188
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 205mm square and 2400mm tall named 'Core A'.", "output": "#1=IFCPROJECT('p187',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e187',$,'concrete column',$,$,#20,#30,$);"}
|
|
189
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 306mm wide and 3000mm high in wall 'East wing'.", "output": "#1=IFCPROJECT('p188',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e188',$,'single door',$,$,#20,#30,$);"}
|
|
190
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 300mm by 2700mm with a 900mm sill.", "output": "#1=IFCPROJECT('p189',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e189',$,'window',$,$,#20,#30,$);"}
|
|
191
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a flat roof covering 151mm by 3600mm.", "output": "#1=IFCPROJECT('p190',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCROOF('e190',$,'flat roof',$,$,#20,#30,$);"}
|
|
192
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a straight stair with 252 risers of 3600mm.", "output": "#1=IFCPROJECT('p191',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSTAIR('e191',$,'straight stair',$,$,#20,#30,$);"}
|
|
193
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "What does IFC stand for?", "output": "Industry Foundation Classes, an open schema for building data."}
|
|
194
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "What is a BIM model?", "output": "A building information model: geometry plus the data about each element."}
|
|
195
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a shear wall that is 200mm thick, 2700mm high and 6000mm long.", "output": "#1=IFCPROJECT('p000',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWALLSTANDARDCASE('e000',$,'shear wall',$,$,#20,#30,$);"}
|
|
196
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a floor slab 101mm thick on level 'Core A'.", "output": "#1=IFCPROJECT('p001',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCSLAB('e001',$,'floor slab',$,$,#20,#30,$);"}
|
|
197
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a steel beam spanning 302mm with a 2400mm deep section.", "output": "#1=IFCPROJECT('p002',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCBEAM('e002',$,'steel beam',$,$,#20,#30,$);"}
|
|
198
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a concrete column 103mm square and 3600mm tall named 'Level 1'.", "output": "#1=IFCPROJECT('p003',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCCOLUMN('e003',$,'concrete column',$,$,#20,#30,$);"}
|
|
199
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a single door 154mm wide and 2400mm high in wall 'Level 1'.", "output": "#1=IFCPROJECT('p004',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCDOOR('e004',$,'single door',$,$,#20,#30,$);"}
|
|
200
|
+
{"instruction": "You are an IFC (Industry Foundation Classes) and BIM assistant. Answer with valid IFC STEP lines.", "input": "Create a window 305mm by 2400mm with a 1200mm sill.", "output": "#1=IFCPROJECT('p005',$,'Sample Project',$,$,$,$,$,$);\n#9=IFCWINDOW('e005',$,'window',$,$,#20,#30,$);"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# flows/prepare.yaml — the stages of `dataset-prep/prepare`, one governed data leg
|
|
2
|
+
# (cairn-extensions#16). Every stage is a kernel of cairn-operator-dataset-checks.
|
|
3
|
+
#
|
|
4
|
+
# ingest (pinned) → exact dedup → derived fields → near dedup → prompt+response lengths
|
|
5
|
+
# → field counts → export → group-aware split (registered with roles) → manifest
|
|
6
|
+
#
|
|
7
|
+
# Run values arrive as `$config.<key>`, bound from the pipeline leg's inputs; an unbound key
|
|
8
|
+
# drops the entry, so the kernel's default applies.
|
|
9
|
+
#
|
|
10
|
+
# Order matters in three places:
|
|
11
|
+
# * `dedup.near` comes after `fields.derive`, with the holdout door's shingles (5 words): the
|
|
12
|
+
# door compares every text field of the registered rows, the derived ones included, so near
|
|
13
|
+
# dedup must see exactly that text. Run on different text or shingles, pairs it kept as
|
|
14
|
+
# distinct cross the door's threshold between train and test, and the fine-tune launch is
|
|
15
|
+
# refused (found on the first full run of the IFC preset).
|
|
16
|
+
# * `export.jsonl` comes before `split`: the intake verdict the control plane stamps on every
|
|
17
|
+
# registered version reads the export's row count (ADR-0102 D1), and the split's three
|
|
18
|
+
# products are registered from this one leg (ADR-0141).
|
|
19
|
+
# * `dataset.manifest` comes last, so its parent is the leg's product and its
|
|
20
|
+
# `data_content_hash` is the cleaned corpus the split read.
|
|
21
|
+
|
|
22
|
+
name: prepare
|
|
23
|
+
kind: data
|
|
24
|
+
description: >
|
|
25
|
+
Pin the source, drop exact and near duplicates, label topics and template families,
|
|
26
|
+
profile prompt+response lengths and field counts, export the cleaned corpus, split it by
|
|
27
|
+
group into train / val / test registered with their roles, and write the manifest.
|
|
28
|
+
|
|
29
|
+
stages:
|
|
30
|
+
- stage: ingest.normalize
|
|
31
|
+
config:
|
|
32
|
+
path: $config.path
|
|
33
|
+
# A Hub commit, tag or branch; a commit sha is the only pin that cannot move.
|
|
34
|
+
revision: $config.revision
|
|
35
|
+
- stage: dedup.exact
|
|
36
|
+
- stage: fields.derive
|
|
37
|
+
config:
|
|
38
|
+
# [{field, source, mode: extract | normalize, pattern, ...}]; none leaves the rows as read.
|
|
39
|
+
rules: $config.derive
|
|
40
|
+
- stage: dedup.near
|
|
41
|
+
config:
|
|
42
|
+
threshold: $config.near_dup_threshold
|
|
43
|
+
# the holdout door's shingle size (cairn.core.holdout.DEFAULT_NGRAM)
|
|
44
|
+
ngram: 5
|
|
45
|
+
- stage: profile.tokens
|
|
46
|
+
config:
|
|
47
|
+
# What a training sequence holds: prompt + response (the chat template aside).
|
|
48
|
+
measure: example
|
|
49
|
+
base_model: $config.base_model
|
|
50
|
+
max_seq_len: $config.max_seq_len
|
|
51
|
+
# count (default) | drop | refuse. Never truncate.
|
|
52
|
+
over_length: $config.over_length
|
|
53
|
+
- stage: profile.fields
|
|
54
|
+
config:
|
|
55
|
+
count: $config.topic_fields
|
|
56
|
+
groups: $config.group_fields
|
|
57
|
+
- stage: export.jsonl
|
|
58
|
+
config:
|
|
59
|
+
store: $config.store
|
|
60
|
+
- stage: split
|
|
61
|
+
config:
|
|
62
|
+
seed: $config.seed
|
|
63
|
+
train_ratio: $config.train_ratio
|
|
64
|
+
val_ratio: $config.val_ratio
|
|
65
|
+
test_ratio: $config.test_ratio
|
|
66
|
+
group_by: $config.group_by
|
|
67
|
+
# The streaming hash backend: the same corpus and seed give the same split on any box.
|
|
68
|
+
backend: hash
|
|
69
|
+
export: true
|
|
70
|
+
register: $config.register
|
|
71
|
+
store: $config.store
|
|
72
|
+
- stage: dataset.manifest
|
|
73
|
+
config:
|
|
74
|
+
store: $config.store
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# dataset-prep — turn a raw source into frozen, registered train / val / test dataset versions
|
|
2
|
+
# a fine-tune can consume (cairn-extensions#16).
|
|
3
|
+
#
|
|
4
|
+
# A domain pack is DATA plus glue, never operators (ADR-0127 D2): this manifest, the `prepare`
|
|
5
|
+
# pipeline (the runnable surface), the `prepare` flow it runs (the stages, all from
|
|
6
|
+
# cairn-operator-dataset-checks), the presets (named input sets) and a small sample. Assets are
|
|
7
|
+
# found by convention (`pipelines/`, `flows/`, `presets/`, `data/`), so there is no `[assets]`.
|
|
8
|
+
#
|
|
9
|
+
# Preparing once and training many times keeps a held-out claim honest: the baseline, the
|
|
10
|
+
# validation and the one-time test comparison read the same versions, and the holdout door
|
|
11
|
+
# refuses a training run that would meet the `test` version. The fine-tune pack accepts these
|
|
12
|
+
# versions only (cairn-pack-finetune, cairn-extensions#7).
|
|
13
|
+
|
|
14
|
+
[pack]
|
|
15
|
+
name = "dataset-prep"
|
|
16
|
+
version = "0.1.0"
|
|
17
|
+
description = "Prepare a dataset once: pin the source, audit it, split it by group and register train, val and test versions with their roles."
|
|
18
|
+
tags = [
|
|
19
|
+
"domain:modelops",
|
|
20
|
+
"domain:dataset-prep",
|
|
21
|
+
"data:jsonl",
|
|
22
|
+
]
|
|
23
|
+
kind = "domain"
|
|
24
|
+
publisher = "cairn"
|
|
25
|
+
trust_level = "official"
|
|
26
|
+
|
|
27
|
+
[compat]
|
|
28
|
+
cairn_engine = ">=0.2.1,<0.4"
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# pipelines/prepare.yaml — prepare a dataset once (cairn-extensions#16).
|
|
2
|
+
#
|
|
3
|
+
# source-ok ⏸ → prepare (data flow) → format → data gate
|
|
4
|
+
#
|
|
5
|
+
# `source-ok` is a person confirming the source, its pin and the name before anything is
|
|
6
|
+
# written. `prepare` runs flows/prepare.yaml as one governed leg and, when it lands, the control plane
|
|
7
|
+
# registers `<register>-train`, `-val` and `-test` with roles training, validation and test,
|
|
8
|
+
# stamps each with its intake verdict, and registers the manifest (a report). `format` checks
|
|
9
|
+
# the cleaned corpus's example structure against the trainers it must feed. `data-ok` stops
|
|
10
|
+
# the pipeline (fail-closed) when a version came back blocked or invalid, or any example is
|
|
11
|
+
# malformed. The versions stay registered (the registry is append-only); a launch that names
|
|
12
|
+
# a blocked or invalid one is refused by the core's intake door either way, and the fine-tune
|
|
13
|
+
# pack's admission checks each version's role and verdict.
|
|
14
|
+
#
|
|
15
|
+
# The versions need the s3 store (`store: s3`, or a profile with `artifact_store = "s3"` and
|
|
16
|
+
# CAIRN_ARTIFACT_S3_BUCKET): the split refuses to register from the local store, whose files sit
|
|
17
|
+
# in the leg's temporary workdir, are deleted at a reboot, and cannot be read from another
|
|
18
|
+
# machine (the `format` leg, the holdout door, a trainer on a GPU box).
|
|
19
|
+
#
|
|
20
|
+
# Nothing here writes row content into the record: stats, hashes, counts and version ids.
|
|
21
|
+
name: prepare
|
|
22
|
+
kind: pipeline
|
|
23
|
+
visibility: public
|
|
24
|
+
description: >
|
|
25
|
+
Pin a dataset source, drop duplicates, profile prompt+response lengths and topics, split it
|
|
26
|
+
by group into train / val / test and register the three versions with their roles.
|
|
27
|
+
outcome: Turn a raw dataset into frozen train, val and test versions
|
|
28
|
+
suite: data
|
|
29
|
+
|
|
30
|
+
inputs:
|
|
31
|
+
# `$inherit: prepare` wires every input below into the `prepare` leg by name (ADR-0106 D2);
|
|
32
|
+
# the specs stay because a `kind: data` flow declares only placeholder names.
|
|
33
|
+
$inherit: prepare
|
|
34
|
+
path: {type: str, description: "A Hugging Face dataset id, a local JSONL/CSV/Parquet file or an s3:// object."}
|
|
35
|
+
revision: {type: str, default: "", description: "Hub commit, tag or branch to load the source at; a commit sha is the only pin that cannot move. Ignored for a file."}
|
|
36
|
+
register: {type: str, description: "Dataset name prefix: versions <register>-train, -val and -test are registered."}
|
|
37
|
+
seed: {type: int, default: 13, description: "Split seed; the same corpus and seed give the same three versions."}
|
|
38
|
+
train_ratio: {type: float, default: 0.9}
|
|
39
|
+
val_ratio: {type: float, default: 0.05}
|
|
40
|
+
test_ratio: {type: float, default: 0.05}
|
|
41
|
+
group_by: {type: str, default: "", description: "Row field no group may straddle (a template family); empty = every row its own group."}
|
|
42
|
+
derive:
|
|
43
|
+
type: list
|
|
44
|
+
default: []
|
|
45
|
+
description: "fields.derive rules: [{field, source, mode: extract | normalize, pattern, replace, default, case}]."
|
|
46
|
+
topic_fields: {type: list, default: [], description: "Label fields counted by value in the audit (top 20)."}
|
|
47
|
+
group_fields: {type: list, default: [], description: "Grouping fields reported by size only (their values are prompt text)."}
|
|
48
|
+
near_dup_threshold: {type: float, default: 0.8, description: "Jaccard similarity above which two examples are near duplicates."}
|
|
49
|
+
base_model: {type: str, default: "", description: "The model to be trained; its tokenizer counts the lengths (whitespace words without one, said in the report)."}
|
|
50
|
+
max_seq_len: {type: int, default: 0, description: "Training sequence length; longer examples are counted (0 = no limit)."}
|
|
51
|
+
over_length: {type: str, default: "count", description: "count | drop | refuse for examples over max_seq_len. Never truncate."}
|
|
52
|
+
store: {type: str, default: "", description: "s3 or local for the exported files; empty = the environment's artifact store. Registering the versions needs s3."}
|
|
53
|
+
|
|
54
|
+
governance:
|
|
55
|
+
budget: {usd: 1}
|
|
56
|
+
series: dataset-prep
|
|
57
|
+
approvers: data-owners
|
|
58
|
+
|
|
59
|
+
steps:
|
|
60
|
+
# The PERSON gate before anything is written: the versions this run registers are frozen
|
|
61
|
+
# under `register`, so someone confirms what is being read, at which pin, and under what name.
|
|
62
|
+
- gate: source-ok
|
|
63
|
+
approvers: data-owners
|
|
64
|
+
show:
|
|
65
|
+
- input.path
|
|
66
|
+
- input.revision
|
|
67
|
+
- input.register
|
|
68
|
+
- input.group_by
|
|
69
|
+
- input.test_ratio
|
|
70
|
+
|
|
71
|
+
- id: prepare
|
|
72
|
+
label: Pin, audit, split and register
|
|
73
|
+
flow: prepare
|
|
74
|
+
depends_on: [source-ok]
|
|
75
|
+
timeout: 60m
|
|
76
|
+
|
|
77
|
+
- id: format
|
|
78
|
+
label: Check the example structure
|
|
79
|
+
task: dataset/format
|
|
80
|
+
depends_on: [prepare]
|
|
81
|
+
with:
|
|
82
|
+
path: $steps.prepare.export_jsonl_output
|
|
83
|
+
target_trainers: [trl, unsloth]
|
|
84
|
+
|
|
85
|
+
# The DATA gate: answered by the data. `intake_verdicts` holds `<name>@<v>=<verdict>` for
|
|
86
|
+
# every version the leg registered (ADR-0102 D1).
|
|
87
|
+
- gate: data-ok
|
|
88
|
+
depends_on: [format]
|
|
89
|
+
predicate: >-
|
|
90
|
+
steps.format.conformant == steps.format.total &&
|
|
91
|
+
length(steps.prepare.findings.intake_verdicts[?contains(@, '=blocked') || contains(@, '=invalid_format')]) == `0`
|
|
92
|
+
|
|
93
|
+
outputs:
|
|
94
|
+
versions: prepare.dataset_versions
|
|
95
|
+
verdicts: prepare.intake_verdicts
|
|
96
|
+
manifest: prepare.dataset_manifest_output
|
|
97
|
+
rows_in: prepare.ingest_normalize_rows
|
|
98
|
+
exact_duplicates: prepare.dedup_exact_dropped
|
|
99
|
+
near_duplicates: prepare.dedup_near_dropped_near
|
|
100
|
+
tokens_p95: prepare.profile_tokens_tokens_p95
|
|
101
|
+
over_length_rows: prepare.profile_tokens_over_length_rows
|
|
102
|
+
topics: prepare.profile_fields_topic_values
|
|
103
|
+
topic_counts: prepare.profile_fields_topic_counts
|
|
104
|
+
format: format.detected_format
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# presets/ifc-bim-alpaca.yaml — the IFC/BIM Alpaca dataset, prepared for a Qwen3-4B QLoRA run
|
|
2
|
+
# (cairn-extensions#16). `cairn remote launch dataset-prep/prepare --preset ifc-bim-alpaca`.
|
|
3
|
+
#
|
|
4
|
+
# The dataset has `instruction`, `input` and `output` only, and `instruction` is the same on
|
|
5
|
+
# every row, so the topic and the template family are derived:
|
|
6
|
+
# * `topic` — the first building element the answer defines (IFCWALL, IFCSLAB, …), `other`
|
|
7
|
+
# when it defines none. A regular expression, not an IFC parser: the IFC validator
|
|
8
|
+
# (cairn-extensions#12) is where a real parse belongs.
|
|
9
|
+
# * `family` — the request with its numbers and quoted names replaced, so two requests that
|
|
10
|
+
# differ only in dimensions or names are one family, and the split keeps each family on one
|
|
11
|
+
# side.
|
|
12
|
+
# The two fields are added to the rows; the trainer formats `instruction`, `input` and
|
|
13
|
+
# `output` only.
|
|
14
|
+
pipeline: dataset-prep/prepare
|
|
15
|
+
presets:
|
|
16
|
+
- name: ifc-bim-alpaca
|
|
17
|
+
description: >
|
|
18
|
+
Dietmar2020/ifc-bim-high-quality-alpaca at a pinned commit, 90/5/5 by template family,
|
|
19
|
+
lengths with the Qwen3-4B-Base tokenizer against a 2048-token sequence.
|
|
20
|
+
inputs:
|
|
21
|
+
path: Dietmar2020/ifc-bim-high-quality-alpaca
|
|
22
|
+
# The Hub commit read on 2026-10-22. Move the pin deliberately: a new commit is new data.
|
|
23
|
+
revision: 08d61c3c082c063c1647c59aeef1cf1107db6474
|
|
24
|
+
register: ifc-bim-alpaca
|
|
25
|
+
seed: 3407
|
|
26
|
+
train_ratio: 0.9
|
|
27
|
+
val_ratio: 0.05
|
|
28
|
+
test_ratio: 0.05
|
|
29
|
+
group_by: family
|
|
30
|
+
derive:
|
|
31
|
+
- field: topic
|
|
32
|
+
source: output
|
|
33
|
+
mode: extract
|
|
34
|
+
pattern: '=\s*(IFC(?:WALL|SLAB|BEAM|COLUMN|DOOR|WINDOW|ROOF|STAIR|RAMP|RAILING|PLATE|MEMBER|FOOTING|PILE|COVERING|CURTAINWALL|SPACE|OPENINGELEMENT|BUILDINGELEMENTPROXY)\w*)\s*\('
|
|
35
|
+
default: other
|
|
36
|
+
- field: family
|
|
37
|
+
source: input
|
|
38
|
+
mode: normalize
|
|
39
|
+
pattern: "\\d+(?:\\.\\d+)?|'[^']*'|\"[^\"]*\""
|
|
40
|
+
replace: "#"
|
|
41
|
+
case: lower
|
|
42
|
+
topic_fields: [topic]
|
|
43
|
+
group_fields: [family]
|
|
44
|
+
base_model: Qwen/Qwen3-4B-Base
|
|
45
|
+
max_seq_len: 2048
|
|
46
|
+
over_length: count
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# cairn-pack-dataset-prep — the dataset-prep domain pack as a data wheel (cairn-extensions#16).
|
|
2
|
+
#
|
|
3
|
+
# Discovered through the `cairn.packs` entry point declared here: `pip install
|
|
4
|
+
# cairn-pack-dataset-prep` is all the engine needs. The wheel carries this directory under the
|
|
5
|
+
# import name `cairn_pack_dataset_prep`: the manifest, the one-line shim the entry point
|
|
6
|
+
# targets, and the declarative assets. No operator; every stage the flow names comes from
|
|
7
|
+
# cairn-operator-dataset-checks. In a checkout, `CAIRN_PACK_PATH=packs/cairn-pack-dataset-prep`
|
|
8
|
+
# loads the same directory as a dev pack.
|
|
9
|
+
[project]
|
|
10
|
+
name = "cairn-pack-dataset-prep"
|
|
11
|
+
version = "0.1.0"
|
|
12
|
+
description = "cairn domain pack: prepare a dataset once into registered train, val and test versions."
|
|
13
|
+
readme = "README.md"
|
|
14
|
+
requires-python = ">=3.12"
|
|
15
|
+
license = "Apache-2.0"
|
|
16
|
+
license-files = ["LICENSE", "NOTICE"]
|
|
17
|
+
authors = [{name = "cairn maintainers"}]
|
|
18
|
+
dependencies = [
|
|
19
|
+
"cairndev>=0.2.1,<0.4",
|
|
20
|
+
# The kernels the flow names (ingest.normalize 1.2.0, fields.derive, profile.fields,
|
|
21
|
+
# profile.tokens 1.1.0, split 1.0.0 with export, dataset.manifest).
|
|
22
|
+
"cairn-operator-dataset-checks>=0.1,<0.2",
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
[project.optional-dependencies]
|
|
26
|
+
# Near-duplicate dedup (dedup.near is an honest skip without it) and the tokenizer that counts
|
|
27
|
+
# lengths with the base model's own vocabulary (whitespace words without it).
|
|
28
|
+
all = ["cairn-operator-dataset-checks[minhash,tokenizers]>=0.1,<0.2"]
|
|
29
|
+
# test — what the pack's own tests import beyond pytest; CI installs it (scripts/test_wheels.sh).
|
|
30
|
+
test = ["moto[s3]>=5"]
|
|
31
|
+
|
|
32
|
+
[project.urls]
|
|
33
|
+
Homepage = "https://cairndev.sh"
|
|
34
|
+
Source = "https://github.com/cairndev-sh/cairn-extensions"
|
|
35
|
+
Issues = "https://github.com/cairndev-sh/cairn-extensions/issues"
|
|
36
|
+
|
|
37
|
+
[project.entry-points."cairn.packs"]
|
|
38
|
+
dataset-prep = "cairn_pack_dataset_prep:pack"
|
|
39
|
+
|
|
40
|
+
[build-system]
|
|
41
|
+
requires = ["hatchling"]
|
|
42
|
+
build-backend = "hatchling.build"
|
|
43
|
+
|
|
44
|
+
[tool.hatch.build.targets.wheel]
|
|
45
|
+
bypass-selection = true
|
|
46
|
+
|
|
47
|
+
[tool.hatch.build.targets.wheel.force-include]
|
|
48
|
+
"__init__.py" = "cairn_pack_dataset_prep/__init__.py"
|
|
49
|
+
"pack.toml" = "cairn_pack_dataset_prep/pack.toml"
|
|
50
|
+
"pipelines" = "cairn_pack_dataset_prep/pipelines"
|
|
51
|
+
"flows" = "cairn_pack_dataset_prep/flows"
|
|
52
|
+
"presets" = "cairn_pack_dataset_prep/presets"
|
|
53
|
+
"data" = "cairn_pack_dataset_prep/data"
|
|
54
|
+
|
|
55
|
+
[tool.hatch.build.targets.sdist]
|
|
56
|
+
include = ["__init__.py", "pack.toml", "pipelines", "flows", "presets", "data", "tests", "README.md", "LICENSE",
|
|
57
|
+
"NOTICE", "pyproject.toml"]
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"""dataset-prep/prepare end to end, in process (cairn-extensions#16).
|
|
2
|
+
|
|
3
|
+
The pack's own flow is resolved through the core (`resolve_flow_ref`, with the pack loaded from
|
|
4
|
+
this checkout), run by the core runner on the 200-row IFC-shaped sample with the
|
|
5
|
+
`ifc-bim-alpaca` preset's rules, and registered through the leg's own registration path
|
|
6
|
+
(`register_leg_descriptors`, which stamps each version's intake verdict). Then the holdout door
|
|
7
|
+
runs on what was registered. Hermetic: a local file instead of the Hub, whitespace token counts,
|
|
8
|
+
no minhash extra (near dedup is an honest skip), sqlite, and a moto-mocked S3 bucket for the
|
|
9
|
+
exported files (the split registers its versions only from the s3 store, cairn-extensions#6)."""
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import json
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
|
|
15
|
+
import pytest
|
|
16
|
+
import yaml
|
|
17
|
+
|
|
18
|
+
PACK = Path(__file__).resolve().parents[1]
|
|
19
|
+
SAMPLE = PACK / "data" / "sample-ifc.jsonl"
|
|
20
|
+
BUCKET = "cairn-test-artifacts"
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@pytest.fixture(autouse=True)
|
|
24
|
+
def s3(monkeypatch):
|
|
25
|
+
"""The s3 artifact store the exports land in, mocked."""
|
|
26
|
+
boto3 = pytest.importorskip("boto3")
|
|
27
|
+
moto = pytest.importorskip("moto")
|
|
28
|
+
monkeypatch.setenv("AWS_ACCESS_KEY_ID", "test")
|
|
29
|
+
monkeypatch.setenv("AWS_SECRET_ACCESS_KEY", "test")
|
|
30
|
+
monkeypatch.setenv("AWS_DEFAULT_REGION", "eu-central-1")
|
|
31
|
+
monkeypatch.setenv("CAIRN_ARTIFACT_S3_BUCKET", BUCKET)
|
|
32
|
+
monkeypatch.setenv("CAIRN_ARTIFACT_S3_PREFIX", "datasets")
|
|
33
|
+
for name in ("CAIRN_ARTIFACT_S3_ENDPOINT", "OBS_ARTIFACT_S3_ENDPOINT", "OBS_ARTIFACT_S3_BUCKET"):
|
|
34
|
+
monkeypatch.delenv(name, raising=False)
|
|
35
|
+
with moto.mock_aws():
|
|
36
|
+
client = boto3.client("s3", region_name="eu-central-1")
|
|
37
|
+
client.create_bucket(Bucket=BUCKET, CreateBucketConfiguration={"LocationConstraint": "eu-central-1"})
|
|
38
|
+
yield client
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
@pytest.fixture(autouse=True)
|
|
42
|
+
def _pack_from_checkout(monkeypatch):
|
|
43
|
+
"""Load this checkout's pack as a dev pack (CAIRN_PACK_PATH), as `cairn` does at start."""
|
|
44
|
+
from cairn.core.pack import registry
|
|
45
|
+
from cairn.core.pack.loader import load_all_packs
|
|
46
|
+
|
|
47
|
+
monkeypatch.setenv("CAIRN_PACK_PATH", str(PACK))
|
|
48
|
+
registry.clear()
|
|
49
|
+
load_all_packs()
|
|
50
|
+
yield
|
|
51
|
+
registry.clear()
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _preset_config(**over) -> dict:
|
|
55
|
+
doc = yaml.safe_load((PACK / "presets" / "ifc-bim-alpaca.yaml").read_text(encoding="utf-8"))
|
|
56
|
+
(preset,) = [p for p in doc["presets"] if p["name"] == "ifc-bim-alpaca"]
|
|
57
|
+
# The sample instead of the Hub; no tokenizer download; the exports in the (mocked) s3 store.
|
|
58
|
+
return {**preset["inputs"], "path": str(SAMPLE), "revision": "", "base_model": "", "store": "s3", **over}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _prepare(workdir: Path, config: dict):
|
|
62
|
+
from cairn.core.dataflow import Budget, DataflowSpec
|
|
63
|
+
from cairn.core.dataflow.defs import resolve_flow_ref
|
|
64
|
+
from cairn.core.dataflow.runner import run_dataflow
|
|
65
|
+
|
|
66
|
+
stages = resolve_flow_ref("dataset-prep/prepare", config, kind="data")
|
|
67
|
+
return run_dataflow(DataflowSpec(stages=stages, budget=Budget()), workdir)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
async def _register(result, store) -> dict:
|
|
71
|
+
from cairn.core.dispatch.leg_executor import register_leg_descriptors
|
|
72
|
+
|
|
73
|
+
out_stats = dict(result.stats) # the leg's stats are what the intake verdict reads
|
|
74
|
+
await register_leg_descriptors(result.output_artifacts + result.named_outputs, store,
|
|
75
|
+
run_id="run-prepare", out_stats=out_stats)
|
|
76
|
+
return out_stats
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
@pytest.fixture
|
|
80
|
+
async def store(tmp_path):
|
|
81
|
+
from cairn.core.storage.artifacts import SqliteArtifactStore
|
|
82
|
+
|
|
83
|
+
s = SqliteArtifactStore(str(tmp_path / "registry.db"))
|
|
84
|
+
yield s
|
|
85
|
+
await s.close()
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
async def test_prepare_registers_three_versions_with_their_roles_and_verdicts(tmp_path, store):
|
|
89
|
+
result = _prepare(tmp_path / "wd", _preset_config())
|
|
90
|
+
stats = await _register(result, store)
|
|
91
|
+
assert stats["dataset_versions"] == ["ifc-bim-alpaca-train@1", "ifc-bim-alpaca-val@1", "ifc-bim-alpaca-test@1"]
|
|
92
|
+
for name, role in (("train", "training"), ("val", "validation"), ("test", "test")):
|
|
93
|
+
meta = await store.get_dataset_version_meta(f"ifc-bim-alpaca-{name}")
|
|
94
|
+
assert meta["role"] == role
|
|
95
|
+
assert all(v.endswith(("=admitted", "=degraded")) for v in stats["intake_verdicts"]), stats["intake_verdicts"]
|
|
96
|
+
# The audit: duplicates, prompt+response lengths, topics; the split kept every family on one side.
|
|
97
|
+
assert (stats["ingest.normalize.rows"], stats["dedup.exact.dropped"]) == (200, 6)
|
|
98
|
+
assert stats["profile.tokens.measure"] == "example" and stats["profile.tokens.prompt_tokens_p95"] > 0
|
|
99
|
+
# near dedup runs only with the [minhash] extra; every count below follows what it dropped
|
|
100
|
+
near = stats["dedup.near.dropped_near"]
|
|
101
|
+
topics = dict(zip(stats["profile.fields.topic_values"], stats["profile.fields.topic_counts"]))
|
|
102
|
+
assert 24 - near <= topics["IFCWALLSTANDARDCASE"] <= 24 and topics["other"] == 2
|
|
103
|
+
assert stats["split.no_leakage"] is True
|
|
104
|
+
assert sum(d.rows for d in result.named_outputs) == 194 - near
|
|
105
|
+
assert all(d.uri.startswith(f"s3://{BUCKET}/datasets/dataflow/") for d in result.named_outputs)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def test_registering_from_the_local_store_is_refused(tmp_path):
|
|
109
|
+
"""A version registered from a local split would name a file in the leg's temporary workdir."""
|
|
110
|
+
with pytest.raises(Exception, match="`register` needs `store: s3`"):
|
|
111
|
+
_prepare(tmp_path / "wd", _preset_config(store="local"))
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
async def test_the_manifest_and_the_record_carry_no_row_content(tmp_path, store, s3):
|
|
115
|
+
result = _prepare(tmp_path / "wd", _preset_config())
|
|
116
|
+
stats = await _register(result, store)
|
|
117
|
+
_bucket, _, key = stats["dataset.manifest.output"].removeprefix("s3://").partition("/")
|
|
118
|
+
manifest = json.loads(s3.get_object(Bucket=_bucket, Key=key)["Body"].read())
|
|
119
|
+
assert manifest["rows"] == 194 - stats["dedup.near.dropped_near"] and set(manifest["fields"]) == {"instruction", "input", "output", "topic", "family"}
|
|
120
|
+
record = json.dumps(stats) + json.dumps(manifest)
|
|
121
|
+
for text in ("shear wall", "IFCPROJECT(", "Industry Foundation Classes, an open"):
|
|
122
|
+
assert text not in record
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def test_the_same_source_and_seed_give_the_same_three_versions(tmp_path):
|
|
126
|
+
first = _prepare(tmp_path / "a", _preset_config())
|
|
127
|
+
again = _prepare(tmp_path / "b", _preset_config())
|
|
128
|
+
other = _prepare(tmp_path / "c", _preset_config(seed=1))
|
|
129
|
+
hashes = [[d.content_hash for d in r.named_outputs] for r in (first, again, other)]
|
|
130
|
+
assert hashes[0] == hashes[1] and hashes[0] != hashes[2]
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
async def test_the_holdout_door_refuses_training_on_data_that_holds_the_test_split(tmp_path, store):
|
|
134
|
+
from cairn.core.holdout import check_holdout
|
|
135
|
+
|
|
136
|
+
result = _prepare(tmp_path / "wd", _preset_config())
|
|
137
|
+
await _register(result, store)
|
|
138
|
+
clean = await check_holdout(["dataset:ifc-bim-alpaca-train@1"], store=store, workspace_id="default")
|
|
139
|
+
assert clean.checked and clean.ok and [h.name for h in clean.holdouts] == ["ifc-bim-alpaca-test"]
|
|
140
|
+
# The whole cleaned corpus (the leg's export) registered as training data holds every test row.
|
|
141
|
+
export = next(d for d in result.output_artifacts if d.stats.get("format") == "jsonl")
|
|
142
|
+
await store.register_dataset_version("ifc-bim-alpaca-all", export.content_hash, actor="t")
|
|
143
|
+
leaky = await check_holdout(["dataset:ifc-bim-alpaca-all@1"], store=store, workspace_id="default")
|
|
144
|
+
assert leaky.checked and not leaky.ok and leaky.overlaps
|