-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMSTuringEmbeddingOnlyScenario.cs
55 lines (51 loc) · 2.3 KB
/
MSTuringEmbeddingOnlyScenario.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using Microsoft.Azure.Cosmos;
using Microsoft.Extensions.Configuration;
namespace VectorIndexScenarioSuite
{
internal class MSTuringEmbeddingOnlyScenario : BigANNBinaryEmbeddingOnlyScearioBase
{
protected override string BaseDataFile => "base";
protected override string BinaryFileExt => "fbin";
protected override string QueryFile => "query";
protected override string GetGroundTruthFileName => "ground_truth";
protected override string PartitionKeyPath => "/id";
protected override string EmbeddingColumn => "embedding";
protected override string EmbeddingPath => $"/{EmbeddingColumn}";
protected override VectorDataType EmbeddingDataType => VectorDataType.Float32;
protected override DistanceFunction EmbeddingDistanceFunction => DistanceFunction.Euclidean;
protected override ulong EmbeddingDimensions => 100;
protected override int MaxPhysicalPartitionCount => 56;
protected override string RunName => "msturing-embeddingonly-" + guid;
public MSTuringEmbeddingOnlyScenario(IConfiguration configurations) :
base(configurations, DefaultInitialAndFinalThroughput(configurations).Item1)
{
}
public override async Task Run()
{
await RunScenario();
}
public override void Setup()
{
this.ReplaceFinalThroughput(DefaultInitialAndFinalThroughput(this.Configurations).Item2);
}
private static (int, int) DefaultInitialAndFinalThroughput(IConfiguration configurations)
{
// default throughput for MSTuringEmbeddingOnlyScenario
int sliceCount = Convert.ToInt32(configurations["AppSettings:scenario:sliceCount"]);
switch (sliceCount)
{
case HUNDRED_THOUSAND:
case ONE_MILLION:
return (6000, 10000);
case TEN_MILLION:
return (12000, 20000);
case ONE_HUNDRED_MILLION:
return (48000, 80000);
case ONE_BILLION:
return (300000, 500000);
default:
throw new ArgumentException("Invalid slice count.");
}
}
}
}