Skip to content

Commit 6210d67

Browse files
committed
Add AssemblyName to all model VersionInfo instances.
Also fix a couple more tests.
1 parent 622136a commit 6210d67

File tree

123 files changed

+330
-167
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

123 files changed

+330
-167
lines changed

src/Microsoft.ML.Api/SerializableLambdaTransform.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ public static VersionInfo GetVersionInfo()
2929
verWrittenCur: 0x00010001,
3030
verReadableCur: 0x00010001,
3131
verWeCanReadBack: 0x00010001,
32-
loaderSignature: LoaderSignature);
32+
loaderSignature: LoaderSignature,
33+
loaderAssemblyName: typeof(SerializableLambdaTransform).Assembly.FullName);
3334
}
3435

3536
public const string LoaderSignature = "UserLambdaMapTransform";

src/Microsoft.ML.Data/DataLoadSave/Binary/BinaryLoader.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -772,7 +772,8 @@ private static VersionInfo GetVersionInfo()
772772
verWrittenCur: 0x00010003, // Number of blocks to put in the shuffle pool
773773
verReadableCur: 0x00010003,
774774
verWeCanReadBack: 0x00010001,
775-
loaderSignature: LoaderSignature);
775+
loaderSignature: LoaderSignature,
776+
loaderAssemblyName: typeof(BinaryLoader).Assembly.FullName);
776777
}
777778

778779
private BinaryLoader(Arguments args, IHost host, Stream stream, bool leaveOpen)

src/Microsoft.ML.Data/DataLoadSave/CompositeDataLoader.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ private static VersionInfo GetVersionInfo()
7171
verWrittenCur: 0x00010002, // Added transform tags and args strings
7272
verReadableCur: 0x00010002,
7373
verWeCanReadBack: 0x00010001,
74-
loaderSignature: LoaderSignature);
74+
loaderSignature: LoaderSignature,
75+
loaderAssemblyName: typeof(CompositeDataLoader).Assembly.FullName);
7576
}
7677

7778
// The composition of loader plus transforms in order.

src/Microsoft.ML.Data/DataLoadSave/PartitionedFileLoader.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@ private static VersionInfo GetVersionInfo()
6060
verWrittenCur: 0x00010001, // Initial
6161
verReadableCur: 0x00010001,
6262
verWeCanReadBack: 0x00010001,
63-
loaderSignature: LoadName);
63+
loaderSignature: LoadName,
64+
loaderAssemblyName: typeof(PartitionedFileLoader).Assembly.FullName);
6465
}
6566

6667
public class Arguments

src/Microsoft.ML.Data/DataLoadSave/PartitionedPathParser.cs

+4-2
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ private static VersionInfo GetVersionInfo()
9191
verWrittenCur: 0x00010001, // Initial
9292
verReadableCur: 0x00010001,
9393
verWeCanReadBack: 0x00010001,
94-
loaderSignature: LoadName);
94+
loaderSignature: LoadName,
95+
loaderAssemblyName: typeof(SimplePartitionedPathParser).Assembly.FullName);
9596
}
9697

9798
private IHost _host;
@@ -214,7 +215,8 @@ private static VersionInfo GetVersionInfo()
214215
verWrittenCur: 0x00010001, // Initial
215216
verReadableCur: 0x00010001,
216217
verWeCanReadBack: 0x00010001,
217-
loaderSignature: LoadName);
218+
loaderSignature: LoadName,
219+
loaderAssemblyName: typeof(ParquetPartitionedPathParser).Assembly.FullName);
218220
}
219221

220222
public ParquetPartitionedPathParser()

src/Microsoft.ML.Data/DataLoadSave/Text/TextLoader.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -960,7 +960,8 @@ private static VersionInfo GetVersionInfo()
960960
verWrittenCur: 0x0001000B, // Header now retained if used and present
961961
verReadableCur: 0x0001000A,
962962
verWeCanReadBack: 0x00010009,
963-
loaderSignature: LoaderSignature);
963+
loaderSignature: LoaderSignature,
964+
loaderAssemblyName: typeof(TextLoader).Assembly.FullName);
964965
}
965966

966967
/// <summary>

src/Microsoft.ML.Data/DataLoadSave/TransformerChain.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ private static VersionInfo GetVersionInfo()
5555
verWrittenCur: 0x00010001, // Initial
5656
verReadableCur: 0x00010001,
5757
verWeCanReadBack: 0x00010001,
58-
loaderSignature: TransformerChain.LoaderSignature);
58+
loaderSignature: TransformerChain.LoaderSignature,
59+
loaderAssemblyName: typeof(TransformerChain<>).Assembly.FullName);
5960
}
6061

6162
/// <summary>

src/Microsoft.ML.Data/DataLoadSave/Transpose/TransposeLoader.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,8 @@ private static VersionInfo GetVersionInfo()
354354
verWrittenCur: 0x00010001, // Initial
355355
verReadableCur: 0x00010001,
356356
verWeCanReadBack: 0x00010001,
357-
loaderSignature: LoadName);
357+
loaderSignature: LoadName,
358+
loaderAssemblyName: typeof(TransposeLoader).Assembly.FullName);
358359
}
359360

360361
// We return the schema view's schema, because we don't necessarily want

src/Microsoft.ML.Data/DataView/RowToRowMapperTransform.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,8 @@ private static VersionInfo GetVersionInfo()
241241
verWrittenCur: 0x00010001, // Initial
242242
verReadableCur: 0x00010001,
243243
verWeCanReadBack: 0x00010001,
244-
loaderSignature: LoaderSignature);
244+
loaderSignature: LoaderSignature,
245+
loaderAssemblyName: typeof(RowToRowMapperTransform).Assembly.FullName);
245246
}
246247

247248
public override ISchema Schema { get { return _bindings; } }

src/Microsoft.ML.Data/Depricated/Instances/HeaderSchema.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,8 @@ private static VersionInfo GetVersionInfo()
222222
verWrittenCur: 0x00010001, // Initial
223223
verReadableCur: 0x00010001,
224224
verWeCanReadBack: 0x00010001,
225-
loaderSignature: LoaderSignature);
225+
loaderSignature: LoaderSignature,
226+
loaderAssemblyName: typeof(FeatureNameCollection).Assembly.FullName);
226227
}
227228

228229
public static void Save(ModelSaveContext ctx, ref VBuffer<DvText> names)

src/Microsoft.ML.Data/Dirty/ChooseColumnsByIndexTransform.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,8 @@ private static VersionInfo GetVersionInfo()
189189
verReadableCur: 0x00010001,
190190
verWeCanReadBack: 0x00010001,
191191
loaderSignature: LoaderSignature,
192-
loaderSignatureAlt: LoaderSignatureOld);
192+
loaderSignatureAlt: LoaderSignatureOld,
193+
loaderAssemblyName: typeof(ChooseColumnsByIndexTransform).Assembly.FullName);
193194
}
194195

195196
private readonly Bindings _bindings;

src/Microsoft.ML.Data/Evaluators/BinaryClassifierEvaluator.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1033,7 +1033,8 @@ private static VersionInfo GetVersionInfo()
10331033
verWrittenCur: 0x00010001, // Initial
10341034
verReadableCur: 0x00010001,
10351035
verWeCanReadBack: 0x00010001,
1036-
loaderSignature: LoaderSignature);
1036+
loaderSignature: LoaderSignature,
1037+
loaderAssemblyName: typeof(BinaryPerInstanceEvaluator).Assembly.FullName);
10371038
}
10381039

10391040
private const int AssignedCol = 0;

src/Microsoft.ML.Data/Evaluators/ClusteringEvaluator.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,8 @@ private static VersionInfo GetVersionInfo()
529529
verWrittenCur: 0x00010001, // Initial
530530
verReadableCur: 0x00010001,
531531
verWeCanReadBack: 0x00010001,
532-
loaderSignature: LoaderSignature);
532+
loaderSignature: LoaderSignature,
533+
loaderAssemblyName: typeof(ClusteringPerInstanceEvaluator).Assembly.FullName);
533534
}
534535

535536
private const int ClusterIdCol = 0;

src/Microsoft.ML.Data/Evaluators/MultiOutputRegressionEvaluator.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,8 @@ private static VersionInfo GetVersionInfo()
385385
verWrittenCur: 0x00010001, // Initial
386386
verReadableCur: 0x00010001,
387387
verWeCanReadBack: 0x00010001,
388-
loaderSignature: LoaderSignature);
388+
loaderSignature: LoaderSignature,
389+
loaderAssemblyName: typeof(MultiOutputRegressionPerInstanceEvaluator).Assembly.FullName);
389390
}
390391

391392
private const int LabelOutput = 0;

src/Microsoft.ML.Data/Evaluators/MulticlassClassifierEvaluator.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -673,7 +673,8 @@ private static VersionInfo GetVersionInfo()
673673
verWrittenCur: 0x00010002, // Serialize the class names
674674
verReadableCur: 0x00010002,
675675
verWeCanReadBack: 0x00010001,
676-
loaderSignature: LoaderSignature);
676+
loaderSignature: LoaderSignature,
677+
loaderAssemblyName: typeof(MultiClassPerInstanceEvaluator).Assembly.FullName);
677678
}
678679

679680
private const int AssignedCol = 0;

src/Microsoft.ML.Data/Evaluators/QuantileRegressionEvaluator.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,8 @@ private static VersionInfo GetVersionInfo()
262262
verWrittenCur: 0x00010001, // Initial
263263
verReadableCur: 0x00010001,
264264
verWeCanReadBack: 0x00010001,
265-
loaderSignature: LoaderSignature);
265+
loaderSignature: LoaderSignature,
266+
loaderAssemblyName: typeof(QuantileRegressionPerInstanceEvaluator).Assembly.FullName);
266267
}
267268

268269
private const int L1Col = 0;

src/Microsoft.ML.Data/Evaluators/RankerEvaluator.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,8 @@ private static VersionInfo GetVersionInfo()
523523
verWrittenCur: 0x00010001, // Initial
524524
verReadableCur: 0x00010001,
525525
verWeCanReadBack: 0x00010001,
526-
loaderSignature: LoaderSignature);
526+
loaderSignature: LoaderSignature,
527+
loaderAssemblyName: typeof(RankerPerInstanceTransform).Assembly.FullName);
527528
}
528529

529530
public const string Ndcg = "NDCG";

src/Microsoft.ML.Data/Evaluators/RegressionEvaluator.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,8 @@ private static VersionInfo GetVersionInfo()
293293
verWrittenCur: 0x00010001, // Initial
294294
verReadableCur: 0x00010001,
295295
verWeCanReadBack: 0x00010001,
296-
loaderSignature: LoaderSignature);
296+
loaderSignature: LoaderSignature,
297+
loaderAssemblyName: typeof(RegressionPerInstanceEvaluator).Assembly.FullName);
297298
}
298299

299300
private const int L1Col = 0;

src/Microsoft.ML.Data/Model/ModelHeader.cs

+30-20
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,10 @@ public static bool TryValidate(ref ModelHeader header, long size, out Exception
403403
Contracts.CheckDecode(header.CbStringTable == 0);
404404
Contracts.CheckDecode(header.FpStringChars == 0);
405405
Contracts.CheckDecode(header.CbStringChars == 0);
406+
if (header.VerWritten < VerAssemblyNameSupported || header.FpAssemblyName == 0)
407+
{
408+
Contracts.CheckDecode(header.FpTail == header.FpModel + header.CbModel);
409+
}
406410
}
407411
else
408412
{
@@ -414,28 +418,33 @@ public static bool TryValidate(ref ModelHeader header, long size, out Exception
414418
Contracts.CheckDecode(header.FpStringChars == header.FpStringTable + header.CbStringTable);
415419
Contracts.CheckDecode(header.CbStringChars % sizeof(char) == 0);
416420
Contracts.CheckDecode(header.FpStringChars + header.CbStringChars >= header.FpStringChars);
417-
Contracts.CheckDecode(header.FpTail == header.FpStringChars + header.CbStringChars);
421+
if (header.VerWritten < VerAssemblyNameSupported || header.FpAssemblyName == 0)
422+
{
423+
Contracts.CheckDecode(header.FpTail == header.FpStringChars + header.CbStringChars);
424+
}
418425
}
419426

420-
if (header.FpAssemblyName == 0)
427+
if (header.VerWritten >= VerAssemblyNameSupported)
421428
{
422-
Contracts.CheckDecode(header.CbAssemblyName == 0);
423-
424-
if (header.FpStringTable == 0)
429+
if (header.FpAssemblyName == 0)
425430
{
426-
Contracts.CheckDecode(header.FpTail == header.FpModel + header.CbModel);
431+
Contracts.CheckDecode(header.CbAssemblyName == 0);
427432
}
428433
else
429434
{
430-
Contracts.CheckDecode(header.FpTail == header.FpStringChars + header.CbStringChars);
435+
// the assembly name always immediately after the string table, if there is one
436+
if (header.FpStringTable == 0)
437+
{
438+
Contracts.CheckDecode(header.FpAssemblyName == header.FpModel + header.CbModel);
439+
}
440+
else
441+
{
442+
Contracts.CheckDecode(header.FpAssemblyName == header.FpStringChars + header.CbStringChars);
443+
}
444+
Contracts.CheckDecode(header.CbAssemblyName % sizeof(char) == 0);
445+
Contracts.CheckDecode(header.FpTail == header.FpAssemblyName + header.CbAssemblyName);
431446
}
432447
}
433-
else
434-
{
435-
Contracts.CheckDecode(header.FpAssemblyName == header.FpStringChars + header.CbStringChars);
436-
Contracts.CheckDecode(header.CbAssemblyName % sizeof(char) == 0);
437-
Contracts.CheckDecode(header.FpTail == header.FpAssemblyName + header.CbAssemblyName);
438-
}
439448

440449
Contracts.CheckDecode(header.FpLim == header.FpTail + sizeof(ulong));
441450
Contracts.CheckDecode(size == 0 || size >= header.FpLim);
@@ -507,10 +516,6 @@ public static bool TryValidate(ref ModelHeader header, BinaryReader reader, long
507516
}
508517
Contracts.CheckDecode(offset == header.CbStringChars);
509518
Contracts.CheckDecode(header.FpStringChars + header.CbStringChars == reader.FpCur() - fpMin);
510-
Contracts.CheckDecode(header.FpTail == reader.FpCur() - fpMin);
511-
512-
ulong tail = reader.ReadUInt64();
513-
Contracts.CheckDecode(tail == TailSignatureValue, "Corrupt model file tail");
514519
}
515520

516521
if (header.VerWritten >= VerAssemblyNameSupported && header.FpAssemblyName != 0)
@@ -530,6 +535,11 @@ public static bool TryValidate(ref ModelHeader header, BinaryReader reader, long
530535
loaderAssemblyName = null;
531536
}
532537

538+
Contracts.CheckDecode(header.FpTail == reader.FpCur() - fpMin);
539+
540+
ulong tail = reader.ReadUInt64();
541+
Contracts.CheckDecode(tail == TailSignatureValue, "Corrupt model file tail");
542+
533543
ex = null;
534544

535545
reader.Seek(fpOrig);
@@ -605,16 +615,16 @@ public readonly struct VersionInfo
605615
public readonly uint VerWrittenCur;
606616
public readonly uint VerReadableCur;
607617
public readonly uint VerWeCanReadBack;
618+
public readonly string LoaderAssemblyName;
608619
public readonly string LoaderSignature;
609620
public readonly string LoaderSignatureAlt;
610-
public readonly string LoaderAssemblyName;
611621

612622
/// <summary>
613623
/// Construct version info with a string value for modelSignature. The string must be 8 characters
614624
/// all less than 0x100. Spaces are mapped to zero. This assumes little-endian.
615625
/// </summary>
616626
public VersionInfo(string modelSignature, uint verWrittenCur, uint verReadableCur, uint verWeCanReadBack,
617-
string loaderSignature = null, string loaderSignatureAlt = null, string loaderAssemblyName = null)
627+
string loaderAssemblyName, string loaderSignature = null, string loaderSignatureAlt = null)
618628
{
619629
Contracts.Check(Utils.Size(modelSignature) == 8, "Model signature must be eight characters");
620630
ModelSignature = 0;
@@ -630,9 +640,9 @@ public VersionInfo(string modelSignature, uint verWrittenCur, uint verReadableCu
630640
VerWrittenCur = verWrittenCur;
631641
VerReadableCur = verReadableCur;
632642
VerWeCanReadBack = verWeCanReadBack;
643+
LoaderAssemblyName = loaderAssemblyName;
633644
LoaderSignature = loaderSignature;
634645
LoaderSignatureAlt = loaderSignatureAlt;
635-
LoaderAssemblyName = loaderAssemblyName;
636646
}
637647
}
638648
}

src/Microsoft.ML.Data/Prediction/Calibrator.cs

+16-8
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,8 @@ private static VersionInfo GetVersionInfo()
332332
verWrittenCur: 0x00010001, // Initial
333333
verReadableCur: 0x00010001,
334334
verWeCanReadBack: 0x00010001,
335-
loaderSignature: LoaderSignature);
335+
loaderSignature: LoaderSignature,
336+
loaderAssemblyName: typeof(CalibratedPredictor).Assembly.FullName);
336337
}
337338
private static VersionInfo GetVersionInfoBulk()
338339
{
@@ -341,7 +342,8 @@ private static VersionInfo GetVersionInfoBulk()
341342
verWrittenCur: 0x00010001, // Initial
342343
verReadableCur: 0x00010001,
343344
verWeCanReadBack: 0x00010001,
344-
loaderSignature: LoaderSignature);
345+
loaderSignature: LoaderSignature,
346+
loaderAssemblyName: typeof(CalibratedPredictor).Assembly.FullName);
345347
}
346348

347349
private CalibratedPredictor(IHostEnvironment env, ModelLoadContext ctx)
@@ -393,7 +395,8 @@ private static VersionInfo GetVersionInfo()
393395
verWrittenCur: 0x00010001, // Initial
394396
verReadableCur: 0x00010001,
395397
verWeCanReadBack: 0x00010001,
396-
loaderSignature: LoaderSignature);
398+
loaderSignature: LoaderSignature,
399+
loaderAssemblyName: typeof(FeatureWeightsCalibratedPredictor).Assembly.FullName);
397400
}
398401

399402
private FeatureWeightsCalibratedPredictor(IHostEnvironment env, ModelLoadContext ctx)
@@ -455,7 +458,8 @@ private static VersionInfo GetVersionInfo()
455458
verWrittenCur: 0x00010001, // Initial
456459
verReadableCur: 0x00010001,
457460
verWeCanReadBack: 0x00010001,
458-
loaderSignature: LoaderSignature);
461+
loaderSignature: LoaderSignature,
462+
loaderAssemblyName: typeof(ParameterMixingCalibratedPredictor).Assembly.FullName);
459463
}
460464

461465
private ParameterMixingCalibratedPredictor(IHostEnvironment env, ModelLoadContext ctx)
@@ -608,7 +612,8 @@ private static VersionInfo GetVersionInfo()
608612
verWrittenCur: 0x00010001, // Initial
609613
verReadableCur: 0x00010001,
610614
verWeCanReadBack: 0x00010001,
611-
loaderSignature: LoaderSignature);
615+
loaderSignature: LoaderSignature,
616+
loaderAssemblyName: typeof(SchemaBindableCalibratedPredictor).Assembly.FullName);
612617
}
613618

614619
/// <summary>
@@ -967,7 +972,8 @@ private static VersionInfo GetVersionInfo()
967972
verWrittenCur: 0x00010001, // Initial
968973
verReadableCur: 0x00010001,
969974
verWeCanReadBack: 0x00010001,
970-
loaderSignature: LoaderSignature);
975+
loaderSignature: LoaderSignature,
976+
loaderAssemblyName: typeof(NaiveCalibrator).Assembly.FullName);
971977
}
972978

973979
private readonly IHost _host;
@@ -1334,7 +1340,8 @@ private static VersionInfo GetVersionInfo()
13341340
verWrittenCur: 0x00010001, // Initial
13351341
verReadableCur: 0x00010001,
13361342
verWeCanReadBack: 0x00010001,
1337-
loaderSignature: LoaderSignature);
1343+
loaderSignature: LoaderSignature,
1344+
loaderAssemblyName: typeof(PlattCalibrator).Assembly.FullName);
13381345
}
13391346

13401347
private readonly IHost _host;
@@ -1569,7 +1576,8 @@ private static VersionInfo GetVersionInfo()
15691576
verWrittenCur: 0x00010001, // Initial
15701577
verReadableCur: 0x00010001,
15711578
verWeCanReadBack: 0x00010001,
1572-
loaderSignature: LoaderSignature);
1579+
loaderSignature: LoaderSignature,
1580+
loaderAssemblyName: typeof(PavCalibrator).Assembly.FullName);
15731581
}
15741582

15751583
// Epsilon for 0-comparisons

src/Microsoft.ML.Data/Scorers/BinaryClassifierScorer.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ private static VersionInfo GetVersionInfo()
4040
verWrittenCur: 0x00010004, // ISchemaBindableMapper update
4141
verReadableCur: 0x00010004,
4242
verWeCanReadBack: 0x00010004,
43-
loaderSignature: LoaderSignature);
43+
loaderSignature: LoaderSignature,
44+
loaderAssemblyName: typeof(BinaryClassifierScorer).Assembly.FullName);
4445
}
4546

4647
private const string RegistrationName = "BinaryClassifierScore";

0 commit comments

Comments
 (0)