Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Removed functions code && supported functions plugin #5979

Merged
merged 34 commits into from
Nov 9, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
09cbdba
added models list
klakhov Apr 5, 2023
56fae95
added runmodel functionality
klakhov Apr 5, 2023
6bd9f47
reworked ml-model methods
klakhov Apr 5, 2023
e68d3e5
added create model button as plugin
klakhov Apr 5, 2023
dafdc56
cleaned up code
klakhov Apr 5, 2023
2ca9aea
removed create page
klakhov Apr 5, 2023
8f1a927
added lambda manager listener plugin
klakhov Apr 7, 2023
5f918dd
reverted some changes
klakhov Apr 7, 2023
8edc89c
reverted unused code
klakhov Apr 7, 2023
3191ab8
exposed lambda manager cached list
klakhov Apr 7, 2023
45dac10
removed request all method
klakhov Apr 11, 2023
648b030
renamed modelItem
klakhov Apr 12, 2023
c8944c4
Merge branch 'develop' into kl/functions-plugin
klakhov Apr 12, 2023
3db0ddb
Merge branch 'develop' into kl/functions-plugin
klakhov Sep 12, 2023
e90cd3a
fixed import in models actions
klakhov Sep 12, 2023
e517ffd
removed public plugin
klakhov Sep 13, 2023
1c1c218
passed action creators to plugins
klakhov Sep 13, 2023
6babad1
supported model item top bar plugins
klakhov Sep 13, 2023
83d5df0
changed empty preview to `null`
klakhov Sep 13, 2023
3d9a297
Merge branch 'develop' into kl/functions-plugin
klakhov Sep 13, 2023
fc33f3c
fixed eslint
klakhov Sep 13, 2023
4fee2cc
Merge branch 'develop' into kl/functions-plugin
klakhov Sep 13, 2023
ff35625
fixed lambda manager & removed plugins registrar
klakhov Sep 13, 2023
51def5b
merge develop
klakhov Oct 26, 2023
a474c27
removed some methods in lambda manager
klakhov Oct 30, 2023
6b876a6
removed save/delete methods
klakhov Oct 31, 2023
2fa0cb2
removed methods
klakhov Oct 31, 2023
fc274a9
added types
klakhov Oct 31, 2023
d6f0109
top bar menu items
klakhov Oct 31, 2023
65705d3
Merge branch 'develop' into kl/functions-plugin
klakhov Oct 31, 2023
ab27e26
removed add button
klakhov Oct 31, 2023
6ada22f
applied comments
klakhov Nov 8, 2023
1d0c27c
Merge branch 'develop' into kl/functions-plugin
klakhov Nov 8, 2023
7b4d5f3
fixed eslint
klakhov Nov 8, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
added runmodel functionality
  • Loading branch information
klakhov committed Apr 5, 2023
commit 56fae95c93b8302401715babfd0310cb6c156775
1 change: 1 addition & 0 deletions cvat-core/src/api-implementation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ export default function implementAPI(cvat) {

cvat.lambda.list.implementation = lambdaManager.list.bind(lambdaManager);
cvat.lambda.updateModelList.implementation = lambdaManager.updateModelList.bind(lambdaManager);
cvat.lambda.setModelProxyMap.implementation = lambdaManager.setModelProxyMap.bind(lambdaManager);
cvat.lambda.run.implementation = lambdaManager.run.bind(lambdaManager);
cvat.lambda.call.implementation = lambdaManager.call.bind(lambdaManager);
cvat.lambda.cancel.implementation = lambdaManager.cancel.bind(lambdaManager);
Expand Down
4 changes: 4 additions & 0 deletions cvat-core/src/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,10 @@ function build() {
const result = await PluginRegistry.apiWrapper(cvat.lambda.providers);
return result;
},
async setModelProxyMap(proxyMap) {
const result = await PluginRegistry.apiWrapper(cvat.lambda.setModelProxyMap, proxyMap);
return result;
},
},
logger: loggerStorage,
config: {
Expand Down
36 changes: 25 additions & 11 deletions cvat-core/src/lambda-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,12 @@ export interface ModelProvider {
attributes: Record<string, string>;
}

interface ModelProxy {
export enum ModelRequestStatus {
QUEUED = 'queued',
STARTED = 'started',
klakhov marked this conversation as resolved.
Show resolved Hide resolved
}
klakhov marked this conversation as resolved.
Show resolved Hide resolved

export interface ModelProxy {
run: (body: any) => Promise<any>;
call: (modelID: string | number, body: any) => Promise<any>;
status: (requestID: string) => Promise<any>;
Expand All @@ -24,9 +29,13 @@ interface ModelProxy {
class LambdaManager {
private listening: any;
private cachedList: any;
private proxyMap: Record<string, ModelProxy>

constructor() {
this.listening = {};
this.proxyMap = {
[ModelProviders.CVAT]: serverProxy.lambda,
};
this.cachedList = null;
}

Expand All @@ -50,6 +59,13 @@ class LambdaManager {
this.cachedList = models;
}

setModelProxyMap(proxyMap: Record<string, ModelProxy>): void {
this.proxyMap = {
...proxyMap,
[ModelProviders.CVAT]: serverProxy.lambda,
};
}

async run(taskID: number, model: MLModel, args: any) {
if (!Number.isInteger(taskID) || taskID < 0) {
throw new ArgumentError(`Argument taskID must be a positive integer. Got "${taskID}"`);
Expand All @@ -71,7 +87,7 @@ class LambdaManager {
function: model.id,
};

const result = await LambdaManager.getModelProxy(model).run(body);
const result = await this.modelProxy(model)?.run(body);
return result.id;
}

Expand All @@ -84,16 +100,14 @@ class LambdaManager {
...args,
task: taskID,
};

const result = await LambdaManager.getModelProxy(model).call(model.id, body);
const result = await this.modelProxy(model)?.call(model.id, body);
return result;
}

async requests() {
const lambdaRequests = await serverProxy.lambda.requests();
const functionsRequests = await serverProxy.functions.requests();
const result = [...lambdaRequests, ...functionsRequests];
return result.filter((request) => ['queued', 'started'].includes(request.status));
return lambdaRequests
.filter((request) => [ModelRequestStatus.QUEUED, ModelRequestStatus.STARTED].includes(request.status));
}

async cancel(requestID, functionID): Promise<void> {
Expand All @@ -110,7 +124,7 @@ class LambdaManager {
delete this.listening[requestID];
}

await LambdaManager.getModelProxy(model).cancel(requestID);
await this.modelProxy(model).cancel(requestID);
}

async listen(requestID, functionID, onUpdate): Promise<void> {
Expand All @@ -121,7 +135,7 @@ class LambdaManager {
const timeoutCallback = async (): Promise<void> => {
try {
this.listening[requestID].timeout = null;
const response = await LambdaManager.getModelProxy(model).status(requestID);
const response = await this.modelProxy(model)?.status(requestID);

if (response.status === RQStatus.QUEUED || response.status === RQStatus.STARTED) {
onUpdate(response.status, response.progress || 0);
Expand Down Expand Up @@ -165,8 +179,8 @@ class LambdaManager {
return providers;
}

private static getModelProxy(model: MLModel): ModelProxy {
return model.provider === ModelProviders.CVAT ? serverProxy.lambda : serverProxy.functions;
modelProxy(model: MLModel): ModelProxy | undefined {
return this.proxyMap[model.provider];
}
}

Expand Down
1 change: 0 additions & 1 deletion cvat-core/src/server-proxy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -535,7 +535,6 @@ async function serverRequest(url: string, data: object): Promise<any> {

async function serverRequestAll(url: string): Promise<any> {
try {
console.log('here');
const res = await fetchAll(url);
return res;
} catch (errorData) {
Expand Down
4 changes: 3 additions & 1 deletion cvat-ui/src/cvat-core-wrapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import _cvat from 'cvat-core/src/api';
import ObjectState from 'cvat-core/src/object-state';
import Webhook from 'cvat-core/src/webhook';
import MLModel from 'cvat-core/src/ml-model';
import { ModelProvider } from 'cvat-core/src/lambda-manager';
import { ModelProvider, ModelRequestStatus, ModelProxy } from 'cvat-core/src/lambda-manager';
import {
Label, Attribute,
} from 'cvat-core/src/labels';
Expand Down Expand Up @@ -55,6 +55,7 @@ export {
ModelKind,
ModelProviders,
ModelReturnType,
ModelRequestStatus,
DimensionType,
Dumper,
};
Expand All @@ -64,4 +65,5 @@ export type {
SerializedLabel,
StorageData,
ModelProvider,
ModelProxy,
};