feat: add training retry time (#3187)

* feat: add training retry time

* remoce log
This commit is contained in:
Archer
2024-11-18 20:57:03 +08:00
committed by shilin66
parent be7a08304e
commit 94361cdbcd
4 changed files with 49 additions and 7 deletions

View File

@@ -51,6 +51,11 @@ const TrainingDataSchema = new Schema({
type: Date, type: Date,
default: () => new Date('2000/1/1') default: () => new Date('2000/1/1')
}, },
retryCount: {
type: Number,
default: 5
},
model: { model: {
// ai model // ai model
type: String, type: String,
@@ -97,7 +102,7 @@ try {
// lock training data(teamId); delete training data // lock training data(teamId); delete training data
TrainingDataSchema.index({ teamId: 1, datasetId: 1 }); TrainingDataSchema.index({ teamId: 1, datasetId: 1 });
// get training data and sort // get training data and sort
TrainingDataSchema.index({ mode: 1, lockTime: 1, weight: -1 }); TrainingDataSchema.index({ mode: 1, retryCount: 1, lockTime: 1, weight: -1 });
TrainingDataSchema.index({ expireAt: 1 }, { expireAfterSeconds: 7 * 24 * 60 * 60 }); // 7 days TrainingDataSchema.index({ expireAt: 1 }, { expireAfterSeconds: 7 * 24 * 60 * 60 }); // 7 days
} catch (error) { } catch (error) {
console.log(error); console.log(error);

View File

@@ -9,7 +9,7 @@ import {
} from '@fastgpt/global/support/permission/constant'; } from '@fastgpt/global/support/permission/constant';
import { CommonErrEnum } from '@fastgpt/global/common/error/code/common'; import { CommonErrEnum } from '@fastgpt/global/common/error/code/common';
import type { ApiRequestProps, ApiResponseType } from '@fastgpt/service/type/next'; import type { ApiRequestProps, ApiResponseType } from '@fastgpt/service/type/next';
import { DatasetTypeEnum } from '@fastgpt/global/core/dataset/constants'; import { DatasetTypeEnum, TrainingModeEnum } from '@fastgpt/global/core/dataset/constants';
import { ClientSession } from 'mongoose'; import { ClientSession } from 'mongoose';
import { parseParentIdInMongo } from '@fastgpt/global/common/parentFolder/utils'; import { parseParentIdInMongo } from '@fastgpt/global/common/parentFolder/utils';
import { mongoSessionRun } from '@fastgpt/service/common/mongo/sessionRun'; import { mongoSessionRun } from '@fastgpt/service/common/mongo/sessionRun';
@@ -21,6 +21,7 @@ import {
import { authUserPer } from '@fastgpt/service/support/permission/user/auth'; import { authUserPer } from '@fastgpt/service/support/permission/user/auth';
import { TeamWritePermissionVal } from '@fastgpt/global/support/permission/user/constant'; import { TeamWritePermissionVal } from '@fastgpt/global/support/permission/user/constant';
import { DatasetErrEnum } from '@fastgpt/global/common/error/code/dataset'; import { DatasetErrEnum } from '@fastgpt/global/common/error/code/dataset';
import { MongoDatasetTraining } from '@fastgpt/service/core/dataset/training/schema';
export type DatasetUpdateQuery = {}; export type DatasetUpdateQuery = {};
export type DatasetUpdateResponse = any; export type DatasetUpdateResponse = any;
@@ -84,6 +85,12 @@ async function handler(
const isFolder = dataset.type === DatasetTypeEnum.folder; const isFolder = dataset.type === DatasetTypeEnum.folder;
updateTraining({
teamId: dataset.teamId,
datasetId: id,
agentModel: agentModel?.model
});
const onUpdate = async (session?: ClientSession) => { const onUpdate = async (session?: ClientSession) => {
await MongoDataset.findByIdAndUpdate( await MongoDataset.findByIdAndUpdate(
id, id,
@@ -137,3 +144,29 @@ async function handler(
} }
} }
export default NextAPI(handler); export default NextAPI(handler);
async function updateTraining({
teamId,
datasetId,
agentModel
}: {
teamId: string;
datasetId: string;
agentModel?: string;
}) {
if (!agentModel) return;
await MongoDatasetTraining.updateMany(
{
teamId,
datasetId,
mode: { $in: [TrainingModeEnum.qa, TrainingModeEnum.auto] }
},
{
$set: {
model: agentModel,
retryCount: 5
}
}
);
}

View File

@@ -39,11 +39,13 @@ export async function generateQA(): Promise<any> {
try { try {
const data = await MongoDatasetTraining.findOneAndUpdate( const data = await MongoDatasetTraining.findOneAndUpdate(
{ {
lockTime: { $lte: addMinutes(new Date(), -6) }, mode: TrainingModeEnum.qa,
mode: TrainingModeEnum.qa retryCount: { $gte: 0 },
lockTime: { $lte: addMinutes(new Date(), -6) }
}, },
{ {
lockTime: new Date() lockTime: new Date(),
$inc: { retryCount: -1 }
} }
) )
.select({ .select({

View File

@@ -39,10 +39,12 @@ export async function generateVector(): Promise<any> {
const data = await MongoDatasetTraining.findOneAndUpdate( const data = await MongoDatasetTraining.findOneAndUpdate(
{ {
mode: TrainingModeEnum.chunk, mode: TrainingModeEnum.chunk,
lockTime: { $lte: addMinutes(new Date(), -1) } retryCount: { $gte: 0 },
lockTime: { $lte: addMinutes(new Date(), -6) }
}, },
{ {
lockTime: new Date() lockTime: new Date(),
$inc: { retryCount: -1 }
} }
).select({ ).select({
_id: 1, _id: 1,