diff --git a/com.unity.ml-agents/Tests/Editor/Analytics/InferenceAnalyticsTests.cs b/com.unity.ml-agents/Tests/Editor/Analytics/InferenceAnalyticsTests.cs index c4516d9b7b..79fcad81f7 100644 --- a/com.unity.ml-agents/Tests/Editor/Analytics/InferenceAnalyticsTests.cs +++ b/com.unity.ml-agents/Tests/Editor/Analytics/InferenceAnalyticsTests.cs @@ -15,7 +15,7 @@ namespace Unity.MLAgents.Tests.Analytics [TestFixture] public class InferenceAnalyticsTests { - const string k_continuousONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action.onnx"; + const string k_continuousONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_v1_0.onnx"; NNModel continuousONNXModel; Test3DSensorComponent sensor_21_20_3; Test3DSensorComponent sensor_20_22_3; diff --git a/com.unity.ml-agents/Tests/Editor/BehaviorParameterTests.cs b/com.unity.ml-agents/Tests/Editor/BehaviorParameterTests.cs index 7667eb7b9e..78f5891785 100644 --- a/com.unity.ml-agents/Tests/Editor/BehaviorParameterTests.cs +++ b/com.unity.ml-agents/Tests/Editor/BehaviorParameterTests.cs @@ -11,7 +11,7 @@ namespace Unity.MLAgents.Tests [TestFixture] public class BehaviorParameterTests : IHeuristicProvider { - const string k_continuousONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action.onnx"; + const string k_continuousONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_v1_0.onnx"; public void Heuristic(in ActionBuffers actionsOut) { // No-op diff --git a/com.unity.ml-agents/Tests/Editor/Inference.meta b/com.unity.ml-agents/Tests/Editor/Inference.meta new file mode 100644 index 0000000000..1427471ab0 --- /dev/null +++ b/com.unity.ml-agents/Tests/Editor/Inference.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7b8fc3bc69d3a4cd9a66ad334f944fb2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.ml-agents/Tests/Editor/DiscreteActionOutputApplierTest.cs b/com.unity.ml-agents/Tests/Editor/Inference/DiscreteActionOutputApplierTest.cs similarity index 100% rename from com.unity.ml-agents/Tests/Editor/DiscreteActionOutputApplierTest.cs rename to com.unity.ml-agents/Tests/Editor/Inference/DiscreteActionOutputApplierTest.cs diff --git a/com.unity.ml-agents/Tests/Editor/DiscreteActionOutputApplierTest.cs.meta b/com.unity.ml-agents/Tests/Editor/Inference/DiscreteActionOutputApplierTest.cs.meta similarity index 100% rename from com.unity.ml-agents/Tests/Editor/DiscreteActionOutputApplierTest.cs.meta rename to com.unity.ml-agents/Tests/Editor/Inference/DiscreteActionOutputApplierTest.cs.meta diff --git a/com.unity.ml-agents/Tests/Editor/EditModeTestInternalBrainTensorApplier.cs b/com.unity.ml-agents/Tests/Editor/Inference/EditModeTestInternalBrainTensorApplier.cs similarity index 100% rename from com.unity.ml-agents/Tests/Editor/EditModeTestInternalBrainTensorApplier.cs rename to com.unity.ml-agents/Tests/Editor/Inference/EditModeTestInternalBrainTensorApplier.cs diff --git a/com.unity.ml-agents/Tests/Editor/EditModeTestInternalBrainTensorApplier.cs.meta b/com.unity.ml-agents/Tests/Editor/Inference/EditModeTestInternalBrainTensorApplier.cs.meta similarity index 100% rename from com.unity.ml-agents/Tests/Editor/EditModeTestInternalBrainTensorApplier.cs.meta rename to com.unity.ml-agents/Tests/Editor/Inference/EditModeTestInternalBrainTensorApplier.cs.meta diff --git a/com.unity.ml-agents/Tests/Editor/EditModeTestInternalBrainTensorGenerator.cs b/com.unity.ml-agents/Tests/Editor/Inference/EditModeTestInternalBrainTensorGenerator.cs similarity index 100% rename from com.unity.ml-agents/Tests/Editor/EditModeTestInternalBrainTensorGenerator.cs rename to com.unity.ml-agents/Tests/Editor/Inference/EditModeTestInternalBrainTensorGenerator.cs diff --git a/com.unity.ml-agents/Tests/Editor/EditModeTestInternalBrainTensorGenerator.cs.meta b/com.unity.ml-agents/Tests/Editor/Inference/EditModeTestInternalBrainTensorGenerator.cs.meta similarity index 100% rename from com.unity.ml-agents/Tests/Editor/EditModeTestInternalBrainTensorGenerator.cs.meta rename to com.unity.ml-agents/Tests/Editor/Inference/EditModeTestInternalBrainTensorGenerator.cs.meta diff --git a/com.unity.ml-agents/Tests/Editor/ModelRunnerTest.cs b/com.unity.ml-agents/Tests/Editor/Inference/ModelRunnerTest.cs similarity index 96% rename from com.unity.ml-agents/Tests/Editor/ModelRunnerTest.cs rename to com.unity.ml-agents/Tests/Editor/Inference/ModelRunnerTest.cs index 2c36ead4e1..b3f4801c56 100644 --- a/com.unity.ml-agents/Tests/Editor/ModelRunnerTest.cs +++ b/com.unity.ml-agents/Tests/Editor/Inference/ModelRunnerTest.cs @@ -12,11 +12,12 @@ namespace Unity.MLAgents.Tests [TestFixture] public class ModelRunnerTest { - const string k_continuousONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action.onnx"; - const string k_discreteONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr.onnx"; - const string k_hybridONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/hybrid0vis53vec_3c_2daction.onnx"; - const string k_continuousNNPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_deprecated.nn"; - const string k_discreteNNPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_deprecated.nn"; + const string k_continuousONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_v1_0.onnx"; + const string k_discreteONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_v1_0.onnx"; + const string k_hybridONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/hybrid0vis53vec_3c_2daction_v1_0.onnx"; + const string k_continuousNNPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_deprecated_v1_0.nn"; + const string k_discreteNNPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_deprecated_v1_0.nn"; + NNModel continuousONNXModel; NNModel discreteONNXModel; NNModel hybridONNXModel; @@ -25,6 +26,7 @@ public class ModelRunnerTest Test3DSensorComponent sensor_21_20_3; Test3DSensorComponent sensor_20_22_3; + ActionSpec GetContinuous2vis8vec2actionActionSpec() { return ActionSpec.MakeContinuous(2); diff --git a/com.unity.ml-agents/Tests/Editor/ModelRunnerTest.cs.meta b/com.unity.ml-agents/Tests/Editor/Inference/ModelRunnerTest.cs.meta similarity index 100% rename from com.unity.ml-agents/Tests/Editor/ModelRunnerTest.cs.meta rename to com.unity.ml-agents/Tests/Editor/Inference/ModelRunnerTest.cs.meta diff --git a/com.unity.ml-agents/Tests/Editor/ParameterLoaderTest.cs b/com.unity.ml-agents/Tests/Editor/Inference/ParameterLoaderTest.cs similarity index 87% rename from com.unity.ml-agents/Tests/Editor/ParameterLoaderTest.cs rename to com.unity.ml-agents/Tests/Editor/Inference/ParameterLoaderTest.cs index dc96d28a79..678702c82b 100644 --- a/com.unity.ml-agents/Tests/Editor/ParameterLoaderTest.cs +++ b/com.unity.ml-agents/Tests/Editor/Inference/ParameterLoaderTest.cs @@ -92,14 +92,18 @@ public DimensionProperty[] GetDimensionProperties() [TestFixture] public class ParameterLoaderTest { + const string k_discrete_ONNX_v2 = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/discrete_rank2_vector_v2_0.onnx"; + // ONNX model with continuous/discrete action output (support hybrid action) - const string k_continuousONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action.onnx"; - const string k_discreteONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr.onnx"; - const string k_hybridONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/hybrid0vis53vec_3c_2daction.onnx"; + const string k_continuousONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_v1_0.onnx"; + const string k_discreteONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_v1_0.onnx"; + const string k_hybridONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/hybrid0vis53vec_3c_2daction_v1_0.onnx"; // NN model with single action output (deprecated, does not support hybrid action). // Same BrainParameters settings as the corresponding ONNX model. - const string k_continuousNNPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_deprecated.nn"; - const string k_discreteNNPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_deprecated.nn"; + const string k_continuousNNPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_deprecated_v1_0.nn"; + const string k_discreteNNPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_deprecated_v1_0.nn"; + + NNModel rank2ONNXModel; NNModel continuousONNXModel; NNModel discreteONNXModel; NNModel hybridONNXModel; @@ -107,6 +111,9 @@ public class ParameterLoaderTest NNModel discreteNNModel; Test3DSensorComponent sensor_21_20_3; Test3DSensorComponent sensor_20_22_3; + BufferSensor sensor_23_20; + VectorSensor sensor_8; + VectorSensor sensor_10; BrainParameters GetContinuous2vis8vec2actionBrainParameters() { @@ -135,6 +142,15 @@ BrainParameters GetHybridBrainParameters() return validBrainParameters; } + BrainParameters GetRank2BrainParameters() + { + var validBrainParameters = new BrainParameters(); + validBrainParameters.VectorObservationSize = 4; + validBrainParameters.NumStackedVectorObservations = 2; + validBrainParameters.ActionSpec = ActionSpec.MakeDiscrete(3, 3, 3); + return validBrainParameters; + } + [SetUp] public void SetUp() { @@ -143,11 +159,15 @@ public void SetUp() hybridONNXModel = (NNModel)AssetDatabase.LoadAssetAtPath(k_hybridONNXPath, typeof(NNModel)); continuousNNModel = (NNModel)AssetDatabase.LoadAssetAtPath(k_continuousNNPath, typeof(NNModel)); discreteNNModel = (NNModel)AssetDatabase.LoadAssetAtPath(k_discreteNNPath, typeof(NNModel)); + rank2ONNXModel = (NNModel)AssetDatabase.LoadAssetAtPath(k_discrete_ONNX_v2, typeof(NNModel)); var go = new GameObject("SensorA"); sensor_21_20_3 = go.AddComponent(); sensor_21_20_3.Sensor = new Test3DSensor("SensorA", 21, 20, 3); sensor_20_22_3 = go.AddComponent(); sensor_20_22_3.Sensor = new Test3DSensor("SensorA", 20, 22, 3); + sensor_23_20 = new BufferSensor(20, 23, "BufferSensor"); + sensor_8 = new VectorSensor(8, "VectorSensor8"); + sensor_10 = new VectorSensor(10, "VectorSensor10"); } [Test] @@ -158,6 +178,7 @@ public void TestModelExist() Assert.IsNotNull(hybridONNXModel); Assert.IsNotNull(continuousNNModel); Assert.IsNotNull(discreteNNModel); + Assert.IsNotNull(rank2ONNXModel); } [TestCase(true)] @@ -239,6 +260,37 @@ public void TestGetOutputTensorsHybrid() Assert.AreEqual(0, model.GetOutputNames().Count()); } + [Test] + public void TestCheckModelRank2() + { + var model = ModelLoader.Load(rank2ONNXModel); + var validBrainParameters = GetRank2BrainParameters(); + + var errors = BarracudaModelParamLoader.CheckModel( + model, validBrainParameters, + new ISensor[] { sensor_23_20, sensor_10, sensor_8 }, new ActuatorComponent[0] + ); + Assert.AreEqual(0, errors.Count()); // There should not be any errors + + errors = BarracudaModelParamLoader.CheckModel( + model, validBrainParameters, + new ISensor[] { sensor_23_20, sensor_10 }, new ActuatorComponent[0] + ); + Assert.AreNotEqual(0, errors.Count()); // Wrong number of sensors + + errors = BarracudaModelParamLoader.CheckModel( + model, validBrainParameters, + new ISensor[] { new BufferSensor(20, 40, "BufferSensor"), sensor_10, sensor_8 }, new ActuatorComponent[0] + ); + Assert.AreNotEqual(0, errors.Count()); // Wrong buffer sensor size + + errors = BarracudaModelParamLoader.CheckModel( + model, validBrainParameters, + new ISensor[] { sensor_23_20, sensor_10, sensor_10 }, new ActuatorComponent[0] + ); + Assert.AreNotEqual(0, errors.Count()); // Wrong vector sensor size + } + [TestCase(true)] [TestCase(false)] public void TestCheckModelValidContinuous(bool useDeprecatedNNModel) diff --git a/com.unity.ml-agents/Tests/Editor/ParameterLoaderTest.cs.meta b/com.unity.ml-agents/Tests/Editor/Inference/ParameterLoaderTest.cs.meta similarity index 100% rename from com.unity.ml-agents/Tests/Editor/ParameterLoaderTest.cs.meta rename to com.unity.ml-agents/Tests/Editor/Inference/ParameterLoaderTest.cs.meta diff --git a/com.unity.ml-agents/Tests/Editor/TensorUtilsTest.cs b/com.unity.ml-agents/Tests/Editor/Inference/TensorUtilsTest.cs similarity index 100% rename from com.unity.ml-agents/Tests/Editor/TensorUtilsTest.cs rename to com.unity.ml-agents/Tests/Editor/Inference/TensorUtilsTest.cs diff --git a/com.unity.ml-agents/Tests/Editor/TensorUtilsTest.cs.meta b/com.unity.ml-agents/Tests/Editor/Inference/TensorUtilsTest.cs.meta similarity index 100% rename from com.unity.ml-agents/Tests/Editor/TensorUtilsTest.cs.meta rename to com.unity.ml-agents/Tests/Editor/Inference/TensorUtilsTest.cs.meta diff --git a/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_deprecated.nn b/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_deprecated_v1_0.nn similarity index 100% rename from com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_deprecated.nn rename to com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_deprecated_v1_0.nn diff --git a/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_deprecated.nn.meta b/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_deprecated_v1_0.nn.meta similarity index 100% rename from com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_deprecated.nn.meta rename to com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_deprecated_v1_0.nn.meta diff --git a/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action.onnx b/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_v1_0.onnx similarity index 100% rename from com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action.onnx rename to com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_v1_0.onnx diff --git a/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action.onnx.meta b/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_v1_0.onnx.meta similarity index 100% rename from com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action.onnx.meta rename to com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_v1_0.onnx.meta diff --git a/com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_deprecated.nn b/com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_deprecated_v1_0.nn similarity index 100% rename from com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_deprecated.nn rename to com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_deprecated_v1_0.nn diff --git a/com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_deprecated.nn.meta b/com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_deprecated_v1_0.nn.meta similarity index 100% rename from com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_deprecated.nn.meta rename to com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_deprecated_v1_0.nn.meta diff --git a/com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr.onnx b/com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_v1_0.onnx similarity index 100% rename from com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr.onnx rename to com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_v1_0.onnx diff --git a/com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr.onnx.meta b/com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_v1_0.onnx.meta similarity index 100% rename from com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr.onnx.meta rename to com.unity.ml-agents/Tests/Editor/TestModels/discrete1vis0vec_2_3action_recurr_v1_0.onnx.meta diff --git a/com.unity.ml-agents/Tests/Editor/TestModels/discrete_rank2_vector_v2_0.onnx b/com.unity.ml-agents/Tests/Editor/TestModels/discrete_rank2_vector_v2_0.onnx new file mode 100644 index 0000000000..c0937d733d Binary files /dev/null and b/com.unity.ml-agents/Tests/Editor/TestModels/discrete_rank2_vector_v2_0.onnx differ diff --git a/com.unity.ml-agents/Tests/Editor/TestModels/discrete_rank2_vector_v2_0.onnx.meta b/com.unity.ml-agents/Tests/Editor/TestModels/discrete_rank2_vector_v2_0.onnx.meta new file mode 100644 index 0000000000..5cfd605639 --- /dev/null +++ b/com.unity.ml-agents/Tests/Editor/TestModels/discrete_rank2_vector_v2_0.onnx.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: b6c7faadd10084c3995ad9fff7aa8c54 +ScriptedImporter: + fileIDToRecycleName: + 11400000: main obj + 11400002: model data + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3} + optimizeModel: 1 + forceArbitraryBatchSize: 1 + treatErrorsAsWarnings: 0 + importMode: 1 diff --git a/com.unity.ml-agents/Tests/Editor/TestModels/hybrid0vis53vec_3c_2daction.onnx b/com.unity.ml-agents/Tests/Editor/TestModels/hybrid0vis53vec_3c_2daction_v1_0.onnx similarity index 100% rename from com.unity.ml-agents/Tests/Editor/TestModels/hybrid0vis53vec_3c_2daction.onnx rename to com.unity.ml-agents/Tests/Editor/TestModels/hybrid0vis53vec_3c_2daction_v1_0.onnx diff --git a/com.unity.ml-agents/Tests/Editor/TestModels/hybrid0vis53vec_3c_2daction.onnx.meta b/com.unity.ml-agents/Tests/Editor/TestModels/hybrid0vis53vec_3c_2daction_v1_0.onnx.meta similarity index 100% rename from com.unity.ml-agents/Tests/Editor/TestModels/hybrid0vis53vec_3c_2daction.onnx.meta rename to com.unity.ml-agents/Tests/Editor/TestModels/hybrid0vis53vec_3c_2daction_v1_0.onnx.meta