重构了main.html的主函数
重构了大量的页面的sidebar 优化了代码结构
This commit is contained in:
@@ -4,8 +4,12 @@
|
||||
import os
|
||||
import pymysql
|
||||
import yaml
|
||||
import logging
|
||||
from flask import Blueprint, request, jsonify
|
||||
|
||||
# 获取模块 logger(继承 main.py 的日志配置)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# 获取项目根目录 - 优先使用环境变量,否则从文件路径计算
|
||||
MOUNT_BASE = os.environ.get('MOUNT_BASE', '/app/base')
|
||||
PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
@@ -47,8 +51,6 @@ def generic_get_all(table_name, order_by='create_time DESC'):
|
||||
|
||||
def get_model_path_by_name(model_name):
|
||||
"""根据模型名称查询模型路径(用于获取基座模型路径)"""
|
||||
import logging
|
||||
logger = logging.getLogger(__name__)
|
||||
logger.info(f"[DEBUG get_model_path_by_name] 查询模型: {model_name}")
|
||||
|
||||
try:
|
||||
@@ -165,6 +167,23 @@ def get_model_manage_by_id(id):
|
||||
return jsonify({'code': 1, 'message': '模型不存在'})
|
||||
|
||||
|
||||
@model_manage_bp.route('/name/<model_name>', methods=['GET'])
|
||||
def get_model_manage_by_name(model_name):
|
||||
"""根据名称获取模型"""
|
||||
logger.info(f"[DEBUG] 按名称查询模型: {model_name}")
|
||||
|
||||
conn = get_db_connection()
|
||||
cursor = conn.cursor()
|
||||
cursor.execute("SELECT * FROM model_manage WHERE name = %s LIMIT 1", (model_name,))
|
||||
model = cursor.fetchone()
|
||||
cursor.close()
|
||||
conn.close()
|
||||
|
||||
if model:
|
||||
return jsonify({'code': 0, 'data': model})
|
||||
return jsonify({'code': 1, 'message': '模型不存在'})
|
||||
|
||||
|
||||
@model_manage_bp.route('', methods=['POST'])
|
||||
def create_model_manage():
|
||||
"""创建模型"""
|
||||
@@ -575,25 +594,57 @@ def merge_model():
|
||||
|
||||
@model_manage_bp.route('/trained-models/<model_name>', methods=['DELETE'])
|
||||
def delete_trained_model(model_name):
|
||||
"""删除已训练模型(从local_trained_models目录)"""
|
||||
"""删除已训练模型
|
||||
type=merged: 删除合并模型(local_trained_models目录)
|
||||
type=lora: 删除权重(saves目录下的lora等权重文件)
|
||||
"""
|
||||
import shutil
|
||||
import logging
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# 获取删除类型参数
|
||||
delete_type = request.args.get('type', 'merged') # 默认删除合并模型
|
||||
|
||||
try:
|
||||
# 删除 local_trained_models 目录下的模型
|
||||
model_path = os.path.join(PROJECT_ROOT, 'local_trained_models', model_name)
|
||||
if delete_type == 'lora':
|
||||
# 删除权重:删除 saves 目录下的权重
|
||||
saves_path = os.path.join(PROJECT_ROOT, 'saves')
|
||||
train_methods = ['lora', 'full', 'qlora', 'dpo', 'cpt', 'prefix', 'adapter', 'peft']
|
||||
|
||||
if not os.path.exists(model_path):
|
||||
return jsonify({'code': 1, 'message': f'模型不存在: {model_name}'})
|
||||
deleted = False
|
||||
for method in train_methods:
|
||||
weight_path = os.path.join(saves_path, method, model_name)
|
||||
if os.path.exists(weight_path):
|
||||
shutil.rmtree(weight_path)
|
||||
logger.info(f"[DELETE] 已删除权重: {weight_path}")
|
||||
deleted = True
|
||||
|
||||
# 删除目录
|
||||
shutil.rmtree(model_path)
|
||||
logger.info(f"[DELETE] 已删除模型: {model_path}")
|
||||
if not deleted:
|
||||
# 也可能是老结构,直接在 saves 下的 model_name 目录
|
||||
old_path = os.path.join(saves_path, model_name)
|
||||
if os.path.exists(old_path):
|
||||
shutil.rmtree(old_path)
|
||||
logger.info(f"[DELETE] 已删除老结构权重: {old_path}")
|
||||
deleted = True
|
||||
|
||||
return jsonify({'code': 0, 'message': '删除成功'})
|
||||
if deleted:
|
||||
return jsonify({'code': 0, 'message': '权重已删除'})
|
||||
else:
|
||||
return jsonify({'code': 1, 'message': f'权重不存在: {model_name}'})
|
||||
else:
|
||||
# 默认删除合并模型(local_trained_models目录)
|
||||
model_path = os.path.join(PROJECT_ROOT, 'local_trained_models', model_name)
|
||||
|
||||
if not os.path.exists(model_path):
|
||||
return jsonify({'code': 1, 'message': f'合并模型不存在: {model_name}'})
|
||||
|
||||
# 删除目录
|
||||
shutil.rmtree(model_path)
|
||||
logger.info(f"[DELETE] 已删除合并模型: {model_path}")
|
||||
|
||||
return jsonify({'code': 0, 'message': '合并模型已删除'})
|
||||
except Exception as e:
|
||||
logger.error(f"[DELETE] 删除模型失败: {str(e)}")
|
||||
logger.error(f"[DELETE] 删除失败: {str(e)}")
|
||||
return jsonify({'code': 1, 'message': f'删除失败: {str(e)}'})
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user