项目文件夹

文件
wehub-resource-sync 593b94c120
pytest / Unit Tests (push) Has been cancelled
pytest / Integration (integration_tests_a) (push) Has been cancelled
pytest / Integration (integration_tests_b) (push) Has been cancelled
pytest / Integration (integration_tests_c) (push) Has been cancelled
pytest / Integration (integration_tests_d) (push) Has been cancelled
pytest / Integration (integration_tests_e) (push) Has been cancelled
pytest / Integration (integration_tests_f) (push) Has been cancelled
pytest / Integration (integration_tests_g) (push) Has been cancelled
pytest / Integration (integration_tests_h) (push) Has been cancelled
pytest / Integration (integration_tests_i) (push) Has been cancelled
pytest / Integration (integration_tests_j) (push) Has been cancelled
pytest / Distributed (distributed_a) (push) Has been cancelled
pytest / Distributed (distributed_b) (push) Has been cancelled
pytest / Distributed (distributed_c) (push) Has been cancelled
pytest / Distributed (distributed_d) (push) Has been cancelled
pytest / Distributed (distributed_e) (push) Has been cancelled
pytest / Distributed (distributed_f) (push) Has been cancelled
pytest / Minimal Install (push) Has been cancelled
pytest / Event File (push) Has been cancelled
pytest (slow) / py-slow (push) Has been cancelled
Publish JSON Schema / publish-schema (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:49:20 +08:00

294 行
13 KiB
Python

from dataclasses import Field
from ludwig.schema import utils as schema_utils
from ludwig.schema.metadata import COMMON_METADATA
from ludwig.schema.metadata.parameter_metadata import ParameterMetadata
from ludwig.utils.torch_utils import initializer_registry
def DropoutField(
default: float = 0.0, description: str | None = None, parameter_metadata: ParameterMetadata = None
) -> Field:
description = description or "Default dropout rate applied to fully connected layers."
full_description = description + (
" Increasing dropout is a common form of regularization to combat overfitting. "
"The dropout is expressed as the probability of an element to be zeroed out (0.0 means no dropout)."
)
parameter_metadata = parameter_metadata or COMMON_METADATA["dropout"]
return schema_utils.FloatRange(
default=default,
min=0,
max=1,
description=full_description,
parameter_metadata=parameter_metadata,
)
def ResidualField(
default: bool = False, description: str | None = None, parameter_metadata: ParameterMetadata = None
) -> Field:
description = description or (
"Whether to add a residual connection to each fully connected layer block. "
"Requires all fully connected layers to have the same `output_size`."
)
parameter_metadata = parameter_metadata or COMMON_METADATA["residual"]
return schema_utils.Boolean(
default=False,
description=description,
parameter_metadata=parameter_metadata,
)
def NumFCLayersField(
default: int = 0, description: str | None = None, parameter_metadata: ParameterMetadata = None, non_zero=False
) -> Field:
if non_zero and default <= 0:
raise ValueError(f"NumFCLayersField: when non_zero=True, default must be > 0, got default={default}.")
description = description or "Number of stacked fully connected layers to apply."
full_description = description + (
" Increasing layers adds capacity to the model, enabling it to learn more complex feature interactions."
)
parameter_metadata = parameter_metadata or COMMON_METADATA["num_fc_layers"]
# When using a dense encoder, the number of fully connected layers must be strictly greater than 0.
if non_zero:
return schema_utils.PositiveInteger(
default=default, allow_none=False, description=full_description, parameter_metadata=parameter_metadata
)
return schema_utils.NonNegativeInteger(
default=default,
allow_none=False,
description=full_description,
parameter_metadata=parameter_metadata,
)
def NormField(
default: str | None = None, description: str | None = None, parameter_metadata: ParameterMetadata = None
) -> Field:
description = description or "Default normalization applied at the beginnging of fully connected layers."
parameter_metadata = parameter_metadata or COMMON_METADATA["norm"]
return schema_utils.StringOptions(
["batch", "layer", "ghost"],
default=default,
allow_none=True,
description=description,
parameter_metadata=parameter_metadata,
)
def NormParamsField(description: str | None = None, parameter_metadata: ParameterMetadata = None) -> Field:
description = description or "Default parameters passed to the `norm` module."
parameter_metadata = parameter_metadata or COMMON_METADATA["norm_params"]
return schema_utils.Dict(
description=description,
parameter_metadata=parameter_metadata,
)
def FCLayersField(description: str | None = None, parameter_metadata: ParameterMetadata = None) -> Field:
description = description or (
"List of dictionaries containing the parameters of all the fully connected layers. "
"The length of the list determines the number of stacked fully connected layers "
"and the content of each dictionary determines the parameters for a specific layer. "
"The available parameters for each layer are: `activation`, `dropout`, `norm`, `norm_params`, "
"`output_size`, `use_bias`, `bias_initializer` and `weights_initializer`. If any of those values "
"is missing from the dictionary, the default one provided as a standalone parameter will be used instead."
)
parameter_metadata = parameter_metadata or COMMON_METADATA["fc_layers"]
return schema_utils.DictList(
description=description,
parameter_metadata=parameter_metadata,
)
INITIALIZER_SUFFIX = """
Alternatively it is possible to specify a dictionary with a key `type` that identifies the type of initializer and
other keys for its parameters, e.g. `{type: normal, mean: 0, stddev: 0}`. For a description of the parameters of each
initializer, see [torch.nn.init](https://pytorch.org/docs/stable/nn.init.html).
"""
def BiasInitializerField(
default: str = "zeros", description: str | None = None, parameter_metadata: ParameterMetadata = None
) -> Field:
initializers_str = ", ".join([f"`{i}`" for i in initializer_registry])
description = description or "Initializer for the bias vector."
full_description = f"{description} Options: {initializers_str}. {INITIALIZER_SUFFIX}"
parameter_metadata = parameter_metadata or COMMON_METADATA["bias_initializer"]
return schema_utils.InitializerOrDict(
default=default,
description=full_description,
parameter_metadata=parameter_metadata,
)
def WeightsInitializerField(
default: str = "xavier_uniform", description: str | None = None, parameter_metadata: ParameterMetadata = None
) -> Field:
initializers_str = ", ".join([f"`{i}`" for i in initializer_registry])
description = description or "Initializer for the weight matrix."
full_description = f"{description} Options: {initializers_str}. {INITIALIZER_SUFFIX}"
parameter_metadata = parameter_metadata or COMMON_METADATA["weights_initializer"]
return schema_utils.InitializerOrDict(
default=default,
description=full_description,
parameter_metadata=parameter_metadata,
)
def EmbeddingInitializerField(
default: str | None = None, description: str | None = None, parameter_metadata: ParameterMetadata = None
) -> Field:
description = description or "Initializer for the embedding matrix."
parameter_metadata = parameter_metadata or COMMON_METADATA["embedding_initializer"]
return schema_utils.StringOptions(
list(initializer_registry.keys()),
default=default,
allow_none=True,
description=description,
parameter_metadata=parameter_metadata,
)
def EmbeddingSizeField(
default: int = 256, description: str | None = None, parameter_metadata: ParameterMetadata = None
) -> Field:
description = description or (
"The maximum embedding size. The actual size will be `min(vocabulary_size, embedding_size)` for "
"`dense` representations and exactly `vocabulary_size` for the `sparse` encoding, where `vocabulary_size` "
"is the number of unique strings appearing in the training set input column plus the number of "
"special tokens (`<UNK>`, `<PAD>`, `<SOS>`, `<EOS>`)."
)
parameter_metadata = parameter_metadata or COMMON_METADATA["embedding_size"]
return schema_utils.PositiveInteger(
default=default,
description=description,
parameter_metadata=parameter_metadata,
)
def EmbeddingsOnCPUField(
default: bool = False, description: str | None = None, parameter_metadata: ParameterMetadata = None
) -> Field:
description = description or (
"Whether to force the placement of the embedding matrix in regular memory and have the CPU resolve them. "
"By default embedding matrices are stored on GPU memory if a GPU is used, as it allows for faster access, "
"but in some cases the embedding matrix may be too large. This parameter forces the placement of the "
"embedding matrix in regular memory and the CPU is used for embedding lookup, slightly slowing down the "
"process as a result of data transfer between CPU and GPU memory."
)
parameter_metadata = parameter_metadata or COMMON_METADATA["embeddings_on_cpu"]
return schema_utils.Boolean(
default=default,
description=description,
parameter_metadata=parameter_metadata,
)
def EmbeddingsTrainableField(
default: bool = True, description: str | None = None, parameter_metadata: ParameterMetadata = None
) -> Field:
description = description or (
"If `true` embeddings are trained during the training process, if `false` embeddings are fixed. "
"It may be useful when loading pretrained embeddings for avoiding finetuning them. This parameter "
"has effect only when `representation` is `dense`; `sparse` one-hot encodings are not trainable."
)
parameter_metadata = parameter_metadata or COMMON_METADATA["embeddings_trainable"]
return schema_utils.Boolean(
default=default,
description=description,
parameter_metadata=parameter_metadata,
)
def PretrainedEmbeddingsField(
default: str | None = None, description: str | None = None, parameter_metadata: ParameterMetadata = None
) -> Field:
description = description or (
"Path to a file containing pretrained embeddings. By default `dense` embeddings are initialized "
"randomly, but this parameter allows to specify a path to a file containing embeddings in the "
"[GloVe format](https://nlp.stanford.edu/projects/glove/). When the file containing the embeddings is "
"loaded, only the embeddings with labels present in the vocabulary are kept, the others are discarded. "
"If the vocabulary contains strings that have no match in the embeddings file, their embeddings are "
"initialized with the average of all other embedding plus some random noise to make them different "
"from each other. This parameter has effect only if `representation` is `dense`."
)
parameter_metadata = parameter_metadata or COMMON_METADATA["pretrained_embeddings"]
return schema_utils.String(
default=default,
allow_none=True,
description=description,
parameter_metadata=parameter_metadata,
)
def MaxSequenceLengthField(
default: int | None = None, description: str | None = None, parameter_metadata: ParameterMetadata = None
) -> Field:
description = description or "[internal] Maximum sequence length from preprocessing."
parameter_metadata = parameter_metadata or COMMON_METADATA["max_sequence_length"]
return schema_utils.PositiveInteger(
default=default,
allow_none=True,
description=description,
parameter_metadata=parameter_metadata,
)
def VocabField(
default: list | None = None, description: str | None = None, parameter_metadata: ParameterMetadata = None
) -> Field:
description = description or "[internal] Vocabulary for the encoder from preprocessing."
parameter_metadata = parameter_metadata or COMMON_METADATA["vocab"]
return schema_utils.List(
default=default,
description=description,
parameter_metadata=parameter_metadata,
)
def VocabSizeField(
default: list | None = None, description: str | None = None, parameter_metadata: ParameterMetadata = None
) -> Field:
description = description or "[internal] Size of the vocabulary from preprocessing."
parameter_metadata = parameter_metadata or COMMON_METADATA["vocab_size"]
return schema_utils.PositiveInteger(
default=default,
allow_none=True,
description=description,
parameter_metadata=parameter_metadata,
)
def RepresentationField(
default: str = "dense", description: str | None = None, parameter_metadata: ParameterMetadata = None
) -> Field:
description = description or (
"Representation of the embedding. `dense` means the embeddings are initialized randomly, "
"`sparse` means they are initialized to be one-hot encodings."
)
parameter_metadata = parameter_metadata or COMMON_METADATA["representation"]
return schema_utils.StringOptions(
["dense", "sparse"],
default=default,
description=description,
parameter_metadata=parameter_metadata,
)
def ReduceOutputField(
default: str | None = "sum", description: str | None = None, parameter_metadata: ParameterMetadata = None
) -> Field:
description = description or (
"How to reduce the output tensor along the `s` sequence length dimension if the rank of the "
"tensor is greater than 2."
)
parameter_metadata = parameter_metadata or COMMON_METADATA["reduce_output"]
return schema_utils.ReductionOptions(
default=default,
description=description,
parameter_metadata=parameter_metadata,
)