-
Notifications
You must be signed in to change notification settings - Fork 0
Embeddings artifactloadoptions
Development build. This page describes
main, not a released package. The latest published Lodestar.Embeddings is 0.4.0 — read its documentation.
The five bounds a vocabulary load is held to.
public sealed record ArtifactLoadOptionsExample — tightening the ceiling for a file from somewhere you do not control.
using Lodestar.Embeddings.Persistence;
var strict = new ArtifactLoadOptions { MaxVocabularySize = 60_000, MaxTotalBytes = 8L * 1024 * 1024 };
int cap = strict.MaxVocabularySize; // => 60000
long defaultDepth = new ArtifactLoadOptions().MaxJsonDepth; // => 32Remarks — a downloaded vocabulary is a file, and a file can declare anything. Deserializing one that claims a hundred million entries would allocate them before anything noticed, which is a denial of service written as a model. Every loader in this namespace takes these bounds, and the defaults are generous enough that a real model never meets one.
| Property | What it bounds | Default |
|---|---|---|
MaxVocabularySize |
Vocabulary entries accepted. | 1 000 000 |
MaxTokenLength |
Characters in a single token. | 1024 |
MaxJsonDepth |
JSON nesting depth. | 32 |
MaxTotalBytes |
Bytes read from the source. | 256 MiB |
MaxArrayLength |
Elements in one array. | 1 000 000 |
Exceeding a bound is a refusal, not a truncation. A model that silently loaded smaller than it
was saved would tokenize differently and say nothing, which is worse than failing. The
InvalidDataException names both the limit and the value that broke it, so the fix is either a
different file or a deliberately raised ceiling.
Being a record with init accessors, an instance is built once and shared: with gives you a
variant without disturbing the original, and passing null to a loader means these defaults.
This is not Lodestar.Text.Persistence.ArtifactLoadOptions. The two share a name and nothing
else — that one bounds a saved vectorizer, this one a downloaded vocabulary, and their defaults
differ because what they bound differs.
Decision 0011 records why they are declared per
package rather than shared.
Applies to — net10.0, netstandard2.0.
See also — VocabTxtLoader,
TokenizerJsonLoader, the persistence index.
- 0001-target-framework
- 0002-unicode-comparison-unit
- 0003-provenance-and-licensing
- 0004-levenshtein-myers-backlog
- 0005-hamming-jellyfish-divergence
- 0006-ratcliff-autojunk
- 0007-metaphone-scope
- 0008-italian-enza-nltk-divergence
- 0009-sample-consumes-a-local-feed
- 0010-stop-word-list-provenance
- 0011-persistence-format
- 0012-per-package-versioning
- 0013-sentencepiece-parity-scope
- 0014-precompiled-normalizer
- 0015-sonar-rules-in-the-build
- 0016-metrics-package-placement
- 0017-bpe-parity-scope
- 0018-multiclass-roc-auc-parallelism-is-opt-in
- 0019-the-net-analysers-run-in-the-build-too
- 0020-normalize-is-a-projection-not-a-parameter
- 0021-multioutput-is-a-method-not-an-enum
- 0022-added-token-matching-flags
- 0023-byte-level-decode-substitutes
- 0024-weighted-median-averages-within-scikit-learns-epsilon
- 0025-quickselect-replaces-a-full-sort-for-the-median
- 0026-r2-and-explainedvariance-split-their-undefined-cases-differently
- 0027-r2-and-explainedvariance-vectorize-only-a-single-output
- 0028-log1p-is-kahans-identity-not-math-log-1-plus-x
- 0029-balanced-accuracy-adjusted-is-left-to-ieee-754-at-the-edge
- 0030-cohen-kappa-keeps-scikit-learns-expected-matrix-orientation
- 0031-nosamplecorrect-mirrors-numpys-float64-upcast
- 0032-fbeta-substitutes-tp-predicted-and-support-algebraically
- 0033-compensated-sum-is-neumaiers-variant
- 0034-dropout-is-refused-for-want-of-a-user
- 0035-a-null-pre-split-is-removed-with-invert-not-isolated
- 0036-a-member-may-ship-without-an-oracle-if-it-says-so
- 0037-the-guards-run-before-the-commit
- 0038-the-gate-confronts-an-exception-tag-with-the-page-that-documents-it
- 0039-mutual-information-returns-zero-on-an-empty-input
- 0040-a-curve-is-a-sealed-class-per-curve
- 0041-one-sample-file-per-public-class
- 0042-phonetic-encoders-refuse-a-null-word
- 0043-the-equality-table-is-sized-to-the-pattern
- 0044-compression-belongs-to-the-caller
- 0045-a-console-call-carries-its-reason-on-the-line
- 0046-check-adr-immutable-runs-in-ci-only
- 0047-one-gate-per-kernel-not-one-per-alphabet
- 0048-the-gate-depends-on-the-kernel-and-the-alphabet
- 0049-two-gates-per-kernel-tested-where-the-width-is-known
- 0050-the-sentencepiece-bpe-lineage-stays-a-bpe-model
- benchmark_latest
- decisions
- equivalence
- matplotlib
- migration
- nightly_run
- numpy
- pandas
- performance
- pytorch
- seaborn
- sklearn
- statsmodels