chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
import os
|
||||
|
||||
os.environ["TF_USE_LEGACY_KERAS"] = "1"
|
||||
|
||||
import sys
|
||||
|
||||
import pytest
|
||||
|
||||
import ray
|
||||
from ray.data.preprocessors import Concatenator
|
||||
from ray.train import ScalingConfig
|
||||
from ray.train.constants import TRAIN_DATASET_KEY
|
||||
|
||||
if sys.version_info >= (3, 12):
|
||||
# Tensorflow is not installed for Python 3.12 because of keras compatibility.
|
||||
pass
|
||||
else:
|
||||
from ray.train.examples.tf.tensorflow_regression_example import (
|
||||
train_func as tensorflow_linear_train_func,
|
||||
)
|
||||
from ray.train.tensorflow import TensorflowTrainer
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def ray_start_4_cpus():
|
||||
address_info = ray.init(num_cpus=4)
|
||||
yield address_info
|
||||
# The code after the yield will run as teardown code.
|
||||
ray.shutdown()
|
||||
|
||||
|
||||
def build_model():
|
||||
import tensorflow as tf
|
||||
|
||||
model = tf.keras.Sequential(
|
||||
[
|
||||
tf.keras.layers.InputLayer(input_shape=()),
|
||||
tf.keras.layers.Flatten(),
|
||||
tf.keras.layers.Dense(1),
|
||||
]
|
||||
)
|
||||
|
||||
return model
|
||||
|
||||
|
||||
@pytest.mark.parametrize("num_workers", [1, 2])
|
||||
def test_tensorflow_linear(ray_start_4_cpus, num_workers):
|
||||
"""Also tests air Keras callback."""
|
||||
epochs = 1
|
||||
|
||||
def train_func(config):
|
||||
result = tensorflow_linear_train_func(config)
|
||||
assert len(result) == epochs
|
||||
|
||||
train_loop_config = {
|
||||
"lr": 1e-3,
|
||||
"batch_size": 32,
|
||||
"epochs": epochs,
|
||||
}
|
||||
scaling_config = ScalingConfig(num_workers=num_workers)
|
||||
dataset = ray.data.read_csv("s3://anonymous@air-example-data/regression.csv")
|
||||
columns_to_concatenate = [f"x{i:03}" for i in range(100)]
|
||||
preprocessor = Concatenator(columns=columns_to_concatenate, output_column_name="x")
|
||||
dataset = preprocessor.transform(dataset)
|
||||
|
||||
trainer = TensorflowTrainer(
|
||||
train_loop_per_worker=train_func,
|
||||
train_loop_config=train_loop_config,
|
||||
scaling_config=scaling_config,
|
||||
datasets={TRAIN_DATASET_KEY: dataset},
|
||||
)
|
||||
result = trainer.fit()
|
||||
assert not result.error
|
||||
assert result.checkpoint
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if sys.version_info >= (3, 12):
|
||||
# Tensorflow is not installed for Python 3.12 because of keras compatibility.
|
||||
sys.exit(0)
|
||||
else:
|
||||
sys.exit(pytest.main(["-v", "-x", __file__]))
|
||||
Reference in New Issue
Block a user