File: ml_context.idl

package info (click to toggle)
chromium 138.0.7204.183-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 6,071,908 kB
  • sloc: cpp: 34,937,088; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,953; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,806; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (351 lines) | stat: -rw-r--r-- 9,460 bytes parent folder | download | duplicates (2)
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This will be a shared interface by two APIs:
// - The Model Loader API,
//     https://github.com/webmachinelearning/model-loader/blob/main/explainer.md
// - The WebNN API,
//     https://github.com/webmachinelearning/webnn/blob/main/explainer.md
// We follow WebNN spec's definition,
//   - https://webmachinelearning.github.io/webnn/#api-mlcontext
// In the future, this interface may be extended when WebNN is implemented so
// a dictionary may be insufficient.

dictionary MLContextLostInfo {
  DOMString message;
};

dictionary MLDataTypeLimits {
  sequence<DOMString> dataTypes;
};

dictionary MLRankRange {
  unsigned long min;
  unsigned long max;
};

dictionary MLTensorLimits : MLDataTypeLimits {
  MLRankRange rankRange;
};

dictionary MLBinarySupportLimits {
  MLTensorLimits a;
  MLTensorLimits b;
  MLDataTypeLimits output;
};

dictionary MLBatchNormalizationSupportLimits {
  MLTensorLimits input;
  MLTensorLimits mean;
  MLTensorLimits variance;
  MLTensorLimits scale;
  MLTensorLimits bias;
  MLDataTypeLimits output;
};

dictionary MLConcatSupportLimits {
  MLTensorLimits inputs;
  MLDataTypeLimits output;
};

dictionary MLConv2dSupportLimits {
  MLTensorLimits input;
  MLTensorLimits filter;
  MLTensorLimits bias;
  MLDataTypeLimits output;
};

dictionary MLGatherSupportLimits {
  MLTensorLimits input;
  MLTensorLimits indices;
  MLDataTypeLimits output;
};

dictionary MLGemmSupportLimits {
  MLTensorLimits a;
  MLTensorLimits b;
  MLTensorLimits c;
  MLDataTypeLimits output;
};

dictionary MLGruSupportLimits {
  MLTensorLimits input;
  MLTensorLimits weight;
  MLTensorLimits recurrentWeight;
  MLTensorLimits bias;
  MLTensorLimits recurrentBias;
  MLTensorLimits initialHiddenState;
  MLDataTypeLimits outputs;
};

dictionary MLGruCellSupportLimits {
  MLTensorLimits input;
  MLTensorLimits weight;
  MLTensorLimits recurrentWeight;
  MLTensorLimits hiddenState;
  MLTensorLimits bias;
  MLTensorLimits recurrentBias;
  MLDataTypeLimits output;
};

dictionary MLLstmSupportLimits {
  MLTensorLimits input;
  MLTensorLimits weight;
  MLTensorLimits recurrentWeight;
  MLTensorLimits bias;
  MLTensorLimits recurrentBias;
  MLTensorLimits peepholeWeight;
  MLTensorLimits initialHiddenState;
  MLTensorLimits initialCellState;
  MLDataTypeLimits outputs;
};

dictionary MLLstmCellSupportLimits {
  MLTensorLimits input;
  MLTensorLimits weight;
  MLTensorLimits recurrentWeight;
  MLTensorLimits hiddenState;
  MLTensorLimits cellState;
  MLTensorLimits bias;
  MLTensorLimits recurrentBias;
  MLTensorLimits peepholeWeight;
  MLDataTypeLimits outputs;
};

dictionary MLNormalizationSupportLimits {
  MLTensorLimits input;
  MLTensorLimits scale;
  MLTensorLimits bias;
  MLDataTypeLimits output;
};

dictionary MLPreluSupportLimits {
  MLTensorLimits input;
  MLTensorLimits slope;
  MLDataTypeLimits output;
};

dictionary MLQuantizeDequantizeLinearSupportLimits {
  MLTensorLimits input;
  MLTensorLimits scale;
  MLTensorLimits zeroPoint;
  MLDataTypeLimits output;
};

dictionary MLLogicalNotSupportLimits {
  MLTensorLimits a;
  MLDataTypeLimits output;
};

dictionary MLSingleInputSupportLimits {
  MLTensorLimits input;
  MLDataTypeLimits output;
};

dictionary MLScatterSupportLimits {
  MLTensorLimits input;
  MLTensorLimits indices;
  MLTensorLimits updates;
  MLDataTypeLimits output;
};

dictionary MLSplitSupportLimits {
  MLTensorLimits input;
  MLDataTypeLimits outputs;
};

dictionary MLWhereSupportLimits {
  MLTensorLimits condition;
  MLTensorLimits trueValue;
  MLTensorLimits falseValue;
  MLDataTypeLimits output;
};

dictionary MLOpSupportLimits {
  MLInputOperandLayout preferredInputLayout;
  [EnforceRange] unsigned long long maxTensorByteLength;
  MLDataTypeLimits input;
  MLDataTypeLimits constant;
  MLDataTypeLimits output;

  MLSingleInputSupportLimits argMin;
  MLSingleInputSupportLimits argMax;
  MLBatchNormalizationSupportLimits batchNormalization;
  MLSingleInputSupportLimits cast;
  MLSingleInputSupportLimits clamp;
  MLConcatSupportLimits concat;
  MLConv2dSupportLimits conv2d;
  MLConv2dSupportLimits convTranspose2d;
  MLSingleInputSupportLimits cumulativeSum;
  MLQuantizeDequantizeLinearSupportLimits dequantizeLinear;

  // Element-wise binary ops.
  MLBinarySupportLimits add;
  MLBinarySupportLimits sub;
  MLBinarySupportLimits mul;
  MLBinarySupportLimits div;
  MLBinarySupportLimits max;
  MLBinarySupportLimits min;
  MLBinarySupportLimits pow;

  // Element-wise logical ops.
  MLBinarySupportLimits equal;
  MLBinarySupportLimits greater;
  MLBinarySupportLimits greaterOrEqual;
  MLBinarySupportLimits lesser;
  MLBinarySupportLimits lesserOrEqual;
  MLBinarySupportLimits notEqual;
  MLBinarySupportLimits logicalAnd;
  MLBinarySupportLimits logicalOr;
  MLBinarySupportLimits logicalXor;
  MLLogicalNotSupportLimits logicalNot;

  // Element-wise unary ops.
  MLSingleInputSupportLimits abs;
  MLSingleInputSupportLimits ceil;
  MLSingleInputSupportLimits cos;
  MLSingleInputSupportLimits erf;
  MLSingleInputSupportLimits exp;
  MLSingleInputSupportLimits floor;
  MLSingleInputSupportLimits identity;
  MLSingleInputSupportLimits log;
  MLSingleInputSupportLimits neg;
  MLSingleInputSupportLimits reciprocal;
  MLSingleInputSupportLimits sign;
  MLSingleInputSupportLimits sin;
  MLSingleInputSupportLimits sqrt;
  MLSingleInputSupportLimits tan;

  MLSingleInputSupportLimits elu;
  MLSingleInputSupportLimits expand;
  MLGatherSupportLimits gather;
  MLGatherSupportLimits gatherElements;
  MLGatherSupportLimits gatherND;
  MLSingleInputSupportLimits gelu;
  MLGemmSupportLimits gemm;
  MLGruSupportLimits gru;
  MLGruCellSupportLimits gruCell;
  MLSingleInputSupportLimits hardSigmoid;
  MLSingleInputSupportLimits hardSwish;
  MLNormalizationSupportLimits instanceNormalization;
  MLNormalizationSupportLimits layerNormalization;
  MLSingleInputSupportLimits leakyRelu;
  MLSingleInputSupportLimits linear;
  MLLstmSupportLimits lstm;
  MLLstmCellSupportLimits lstmCell;
  MLBinarySupportLimits matmul;
  MLSingleInputSupportLimits pad;
  MLPreluSupportLimits prelu;
  MLQuantizeDequantizeLinearSupportLimits quantizeLinear;

  // Pool2d.
  MLSingleInputSupportLimits averagePool2d;
  MLSingleInputSupportLimits l2Pool2d;
  MLSingleInputSupportLimits maxPool2d;

  // Reduction ops.
  MLSingleInputSupportLimits reduceL1;
  MLSingleInputSupportLimits reduceL2;
  MLSingleInputSupportLimits reduceLogSum;
  MLSingleInputSupportLimits reduceLogSumExp;
  MLSingleInputSupportLimits reduceMax;
  MLSingleInputSupportLimits reduceMean;
  MLSingleInputSupportLimits reduceMin;
  MLSingleInputSupportLimits reduceProduct;
  MLSingleInputSupportLimits reduceSum;
  MLSingleInputSupportLimits reduceSumSquare;

  MLSingleInputSupportLimits relu;
  MLSingleInputSupportLimits resample2d;
  MLSingleInputSupportLimits reshape;
  MLSingleInputSupportLimits reverse;
  MLScatterSupportLimits scatterElements;
  MLScatterSupportLimits scatterND;
  MLSingleInputSupportLimits sigmoid;
  MLSingleInputSupportLimits slice;
  MLSingleInputSupportLimits softmax;
  MLSingleInputSupportLimits softplus;
  MLSingleInputSupportLimits softsign;
  MLSplitSupportLimits split;
  MLSingleInputSupportLimits tanh;
  MLSingleInputSupportLimits tile;
  MLSingleInputSupportLimits transpose;
  MLSingleInputSupportLimits triangular;
  MLWhereSupportLimits where;
};

typedef record<USVString, MLTensor> MLNamedTensors;

[
  RuntimeEnabled=MachineLearningNeuralNetwork,
  SecureContext,
  Exposed=(Window, Worker)
] interface MLContext {
  [
    RuntimeEnabled=MachineLearningNeuralNetwork,
    CallWith=ScriptState
  ] readonly attribute Promise<MLContextLostInfo> lost;

  [
    RuntimeEnabled=MachineLearningNeuralNetwork,
    CallWith=ScriptState,
    RaisesException
  ] void destroy();

  [
    RuntimeEnabled=MachineLearningNeuralNetwork,
    CallWith=ScriptState,
    RaisesException
  ] Promise<MLTensor> createTensor(MLTensorDescriptor descriptor);

  [
    RuntimeEnabled=MachineLearningNeuralNetwork,
    CallWith=ScriptState,
    RaisesException
  ] Promise<MLTensor> createConstantTensor(
        MLOperandDescriptor descriptor,
        AllowSharedBufferSource sourceData);

  [
    RuntimeEnabled=MachineLearningNeuralNetwork,
    CallWith=ScriptState,
    RaisesException
  ] void writeTensor(MLTensor dstTensor, AllowSharedBufferSource srcData);

  [
    RuntimeEnabled=MachineLearningNeuralNetwork,
    CallWith=ScriptState,
    RaisesException
  ] Promise<ArrayBuffer> readTensor(
        MLTensor sourceTensor);

  [
    RuntimeEnabled=MachineLearningNeuralNetwork,
    CallWith=ScriptState,
    RaisesException
  ] Promise<undefined> readTensor(
        MLTensor sourceTensor,
        AllowSharedBufferSource destinationData);

  [
    RuntimeEnabled=MachineLearningNeuralNetwork,
    CallWith=ScriptState,
    RaisesException,
    Measure
  ] void dispatch(
      MLGraph graph, MLNamedTensors inputs, MLNamedTensors outputs);
  [
    RuntimeEnabled=MachineLearningNeuralNetwork,
    CallWith=ScriptState
  ] MLOpSupportLimits opSupportLimits();

  // TODO(crbug.com/345352987): remove device once MLContext(gpuDevice) is
  // implemented.
  [
    RuntimeEnabled=MachineLearningNeuralNetwork,
    CallWith=ScriptState,
    RaisesException
  ] Promise<GPUBuffer> exportToGPU(
    GPUDevice device, MLTensor tensor);
};