使用ChatGLM-6B构建智能教育辅导系统
最近在捣鼓AI和教育结合的项目,发现ChatGLM-6B这个开源模型在教育场景下还挺有意思的。它不像那些动辄几百亿参数的大模型那么“重”,部署起来相对简单,但对话能力又足够应对很多教学场景。
我试着用它搭建了一个简单的智能辅导系统,发现效果比预想的要好。学生可以随时提问,系统能解答知识点、分析题目,甚至还能扮演不同学科的老师进行对话。今天就跟大家分享一下具体的实现思路和代码,如果你也想在教育领域试试AI,这篇文章应该能给你一些启发。
1. 为什么选择ChatGLM-6B做教育辅导?
教育场景对AI模型有几个特殊要求:回答要准确、解释要通俗、还要有耐心。ChatGLM-6B在这方面有几个优势:
对中文支持特别好:毕竟是针对中文优化的模型,理解我们的教育术语和表达习惯更自然。比如解释“勾股定理”或者“文言文虚词用法”,它都能用比较地道的语言讲清楚。
部署门槛低:6B的参数量意味着你不需要顶级的GPU也能跑起来。我用的是RTX 3090,显存完全够用。如果显存紧张,还可以用INT4量化版本,6GB显存就能跑,很多消费级显卡都能胜任。
对话连贯性好:教育辅导不是一问一答就结束,往往需要多轮对话。ChatGLM-6B能记住对话历史,学生追问细节时,它能基于之前的上下文给出连贯的回答。
可定制性强:如果你有特定的教学资料或者题库,可以通过微调让模型更懂你的内容。后面我会讲到怎么用P-Tuning v2进行简单的领域适应。
2. 快速搭建基础辅导系统
先来看看最基础的搭建步骤。如果你只是想快速体验一下,这部分代码就能让你跑起来一个可用的对话系统。
2.1 环境准备
首先确保你的环境有Python 3.8+,然后安装必要的依赖:
# 创建虚拟环境(可选但推荐) python -m venv edu_tutor source edu_tutor/bin/activate # Linux/Mac # 或者 edu_tutor\Scripts\activate # Windows # 安装核心依赖 pip install torch transformers accelerate pip install gradio # 用于Web界面 pip install sentencepiece # 分词器需要如果你的GPU显存有限(比如只有8GB),建议安装量化版本的支持:
pip install cpm_kernels # 量化相关2.2 最简单的辅导对话实现
下面这段代码实现了一个最基本的数学辅导功能:
from transformers import AutoTokenizer, AutoModel import torch class MathTutor: def __init__(self): print("正在加载数学辅导模型...") # 使用量化版本节省显存 self.tokenizer = AutoTokenizer.from_pretrained( "THUDM/chatglm-6b-int4", trust_remote_code=True ) self.model = AutoModel.from_pretrained( "THUDM/chatglm-6b-int4", trust_remote_code=True ).half().cuda() # 半精度,GPU运行 self.model = self.model.eval() print("模型加载完成!") def explain_concept(self, concept): """解释数学概念""" prompt = f"请用初中生能理解的语言解释一下什么是{concept},并举例说明。" response, _ = self.model.chat(self.tokenizer, prompt, history=[]) return response def solve_problem(self, problem): """解题并讲解思路""" prompt = f"""请解答以下数学题,并分步骤讲解解题思路: 题目:{problem} 请按照以下格式回答: 1. 题目分析 2. 解题步骤 3. 最终答案 4. 易错点提醒""" response, _ = self.model.chat(self.tokenizer, prompt, history=[]) return response def interactive_tutoring(self): """交互式辅导""" print("数学辅导系统已启动!输入'退出'结束对话。") history = [] while True: user_input = input("\n学生:") if user_input.lower() in ['退出', 'exit', 'quit']: print("辅导结束,再见!") break # 构建适合辅导的提示 prompt = f"""你是一位耐心的数学老师,正在辅导一名初中生。 学生的问题:{user_input} 请用亲切、易懂的语言回答,如果涉及解题,请分步骤讲解。""" response, history = self.model.chat( self.tokenizer, prompt, history=history ) print(f"\n老师:{response}") if __name__ == "__main__": tutor = MathTutor() # 测试概念解释 print("=== 测试概念解释 ===") explanation = tutor.explain_concept("二次函数") print(explanation) print("\n" + "="*50 + "\n") # 测试解题 print("=== 测试解题 ===") solution = tutor.solve_problem("一个长方形的长是宽的2倍,周长是36厘米,求长和宽各是多少?") print(solution) # 启动交互式辅导 print("\n" + "="*50 + "\n") tutor.interactive_tutoring()运行这个代码,你会看到模型能够:
- 用通俗的语言解释数学概念
- 分步骤解答数学题
- 记住对话历史,进行多轮辅导
我测试了几个例子,比如问“什么是三角函数”,它不仅能给出定义,还会用“就像爬坡的坡度”这样的比喻帮助理解,确实挺像一位有经验的老师。
3. 构建学科专属的辅导模块
单一学科辅导不够用?我们可以为不同学科创建专门的辅导模块。下面我以数学、语文、英语为例,展示如何构建学科专属的辅导系统。
3.1 多学科辅导系统设计
from typing import Dict, List import json class SubjectTutor: def __init__(self): self.tokenizer = AutoTokenizer.from_pretrained( "THUDM/chatglm-6b-int4", trust_remote_code=True ) self.model = AutoModel.from_pretrained( "THUDM/chatglm-6b-int4", trust_remote_code=True ).half().cuda() self.model.eval() # 学科特定的提示模板 self.subject_templates = { "math": { "concept": "请用生动有趣的例子解释数学概念'{concept}',适合{grade}学生理解。", "problem": """请解答以下数学题,并像老师一样讲解: 题目:{problem} 要求: 1. 先分析题目考察的知识点 2. 分步骤解题,每步说明理由 3. 总结这类题的解题技巧 4. 给出类似题目供练习""", "role": "你是一位幽默的数学老师,喜欢用生活中的例子讲解数学。" }, "chinese": { "concept": "请讲解语文知识'{concept}',包括含义、用法和经典例句,适合{grade}学生。", "analysis": """请分析以下文言文/现代文: 文本:{text} 请从以下角度分析: 1. 主要内容概括 2. 写作手法赏析 3. 重点字词解释 4. 作者情感分析 5. 阅读理解题建议""", "role": "你是一位博学的语文老师,擅长文学赏析和写作指导。" }, "english": { "concept": "请讲解英语语法'{concept}',包括结构、用法和常见错误,适合{grade}学生。", "translation": """请翻译并讲解以下英文句子: 原文:{sentence} 要求: 1. 提供准确翻译 2. 分析句子结构 3. 讲解重点语法 4. 举例类似句型""", "role": "你是一位亲切的英语老师,注重实用英语教学。" } } def tutor_math(self, question: str, grade: str = "初中") -> str: """数学辅导""" if "什么是" in question or "解释" in question: # 提取概念 concept = question.replace("什么是", "").replace("解释", "").strip() prompt = self.subject_templates["math"]["concept"].format( concept=concept, grade=grade ) else: # 解题 prompt = self.subject_templates["math"]["problem"].format( problem=question ) # 添加角色设定 full_prompt = self.subject_templates["math"]["role"] + "\n\n" + prompt response, _ = self.model.chat(self.tokenizer, full_prompt, history=[]) return response def tutor_chinese(self, text: str, task: str = "analysis", grade: str = "初中") -> str: """语文辅导""" if task == "analysis": prompt = self.subject_templates["chinese"]["analysis"].format(text=text) else: # 概念解释 prompt = self.subject_templates["chinese"]["concept"].format( concept=text, grade=grade ) full_prompt = self.subject_templates["chinese"]["role"] + "\n\n" + prompt response, _ = self.model.chat(self.tokenizer, full_prompt, history=[]) return response def tutor_english(self, content: str, task: str = "translation", grade: str = "初中") -> str: """英语辅导""" if task == "translation": prompt = self.subject_templates["english"]["translation"].format( sentence=content ) else: prompt = self.subject_templates["english"]["concept"].format( concept=content, grade=grade ) full_prompt = self.subject_templates["english"]["role"] + "\n\n" + prompt response, _ = self.model.chat(self.tokenizer, full_prompt, history=[]) return response def adaptive_tutoring(self, student_input: str, history: List = None) -> Dict: """智能学科识别和辅导""" if history is None: history = [] # 简单学科识别(实际中可以更复杂) subject = "general" if any(word in student_input for word in ["数学", "计算", "公式", "几何"]): subject = "math" elif any(word in student_input for word in ["语文", "文言文", "作文", "古诗"]): subject = "chinese" elif any(word in student_input for word in ["英语", "grammar", "translate", "英文"]): subject = "english" # 根据学科选择辅导方法 if subject == "math": response = self.tutor_math(student_input) elif subject == "chinese": response = self.tutor_chinese(student_input) elif subject == "english": response = self.tutor_english(student_input) else: # 通用辅导 prompt = f"""你是一位全科辅导老师,请回答学生的问题: 学生问题:{student_input} 请用适合中学生的语言回答,确保准确性和易懂性。""" response, history = self.model.chat(self.tokenizer, prompt, history=history) return { "subject": subject, "response": response, "history": history } # 使用示例 if __name__ == "__main__": tutor = SubjectTutor() # 测试多学科辅导 test_cases = [ ("数学", "什么是勾股定理?"), ("语文", "分析一下《静夜思》的写作特点"), ("英语", "翻译并分析:'The quick brown fox jumps over the lazy dog'"), ] for subject, question in test_cases: print(f"\n{'='*60}") print(f"学科:{subject}") print(f"问题:{question}") print(f"{'='*60}") if subject == "数学": result = tutor.tutor_math(question) elif subject == "语文": result = tutor.tutor_chinese(question) else: result = tutor.tutor_english(question, task="translation") print(f"回答:{result[:500]}...") # 只打印前500字符这个系统的特点是:
- 学科专业化:每个学科有专门的提示模板,回答更符合学科特点
- 难度适配:可以根据年级调整解释的深度
- 智能识别:能自动识别问题属于哪个学科
在实际测试中,数学问题的解答会比较详细地分步骤,语文分析会侧重文学赏析,英语辅导则注重语法和实用表达。
4. 添加教育特有的功能模块
基础的问答功能有了,但真正的辅导系统还需要更多教育专属的功能。下面我实现几个实用的模块:
4.1 错题分析和推荐
class LearningAnalytics: def __init__(self, tutor): self.tutor = tutor self.mistake_records = [] # 记录错题 def analyze_mistake(self, problem: str, student_answer: str, correct_answer: str): """分析错题原因""" prompt = f"""分析学生解题错误的原因: 题目:{problem} 学生答案:{student_answer} 正确答案:{correct_answer} 请分析: 1. 错误类型(概念不清、计算错误、理解偏差等) 2. 具体错误点 3. 针对性的学习建议 4. 推荐练习的类似题目""" analysis, _ = self.tutor.model.chat(self.tutor.tokenizer, prompt, history=[]) # 记录错题 mistake_record = { "problem": problem, "student_answer": student_answer, "correct_answer": correct_answer, "analysis": analysis, "timestamp": datetime.now().isoformat() } self.mistake_records.append(mistake_record) return analysis def generate_practice_plan(self, student_level: str = "中等"): """生成个性化练习计划""" if not self.mistake_records: return "暂无错题记录,无法生成练习计划。" # 分析错题类型分布 prompt = f"""根据以下错题记录,为{student_level}水平的学生生成一周练习计划: 错题记录:{json.dumps(self.mistake_records[-5:], ensure_ascii=False)} 要求: 1. 针对薄弱知识点安排练习 2. 每天练习时间30-40分钟 3. 包含复习和新知识学习 4. 周末安排综合测试 5. 给出具体的学习目标""" plan, _ = self.tutor.model.chat(self.tutor.tokenizer, prompt, history=[]) return plan def explain_solution_step_by_step(self, problem: str): """分步骤讲解解题过程""" prompt = f"""请用最详细的方式分步骤讲解这道题: 题目:{problem} 要求: 1. 每一步都要解释“为什么这么做” 2. 用箭头或编号明确步骤顺序 3. 在关键步骤添加“注意”提示 4. 最后总结解题思路 5. 提供1-2个变式题目""" explanation, _ = self.tutor.model.chat(self.tutor.tokenizer, prompt, history=[]) return explanation # 使用示例 if __name__ == "__main__": # 初始化辅导系统 tutor = SubjectTutor() analytics = LearningAnalytics(tutor) # 错题分析 print("=== 错题分析 ===") analysis = analytics.analyze_mistake( problem="解方程:2x + 5 = 13", student_answer="x = 4", correct_answer="x = 4" ) print(analysis) print("\n" + "="*60 + "\n") # 分步骤讲解 print("=== 分步骤讲解 ===") explanation = analytics.explain_solution_step_by_step( "一个圆的半径是5cm,求面积和周长。" ) print(explanation) print("\n" + "="*60 + "\n") # 生成练习计划 print("=== 个性化练习计划 ===") plan = analytics.generate_practice_plan("中等") print(plan)4.2 知识点图谱生成
class KnowledgeGraph: def __init__(self, tutor): self.tutor = tutor self.graph = {} def extract_related_concepts(self, main_concept: str, subject: str): """提取相关知识点""" prompt = f"""对于{subject}学科的'{main_concept}'知识点,请列出: 1. 前置知识点(学习这个之前需要掌握什么) 2. 核心知识点(这个概念本身的内容) 3. 延伸知识点(学了这个之后可以学什么) 4. 易混淆知识点(容易搞混的概念) 5. 实际应用(在生活中的应用) 请用JSON格式返回,包含category和concepts两个字段。""" response, _ = self.tutor.model.chat(self.tutor.tokenizer, prompt, history=[]) # 尝试解析JSON,如果失败则返回文本 try: import re json_match = re.search(r'\{.*\}', response, re.DOTALL) if json_match: return json.loads(json_match.group()) else: return {"text": response} except: return {"text": response} def generate_learning_path(self, start_concept: str, target_concept: str, subject: str): """生成学习路径""" prompt = f"""为{subject}学科设计从'{start_concept}'到'{target_concept}'的学习路径: 要求: 1. 分阶段学习,每阶段2-3个核心概念 2. 每个概念标注预计学习时间 3. 每阶段后安排练习题 4. 标注难点和重点 5. 提供学习资源建议 格式: 阶段1:基础概念(预计3小时) - 概念A(30分钟) - 概念B(45分钟) - 练习题:... - 重点:... - 难点:...""" path, _ = self.tutor.model.chat(self.tutor.tokenizer, prompt, history=[]) return path # 使用示例 if __name__ == "__main__": tutor = SubjectTutor() kg = KnowledgeGraph(tutor) print("=== 知识点关联分析 ===") concepts = kg.extract_related_concepts("二次函数", "数学") if isinstance(concepts, dict) and "text" in concepts: print(concepts["text"][:800]) # 限制输出长度 else: print(json.dumps(concepts, indent=2, ensure_ascii=False)) print("\n" + "="*60 + "\n") print("=== 学习路径规划 ===") path = kg.generate_learning_path("一次函数", "二次函数", "数学") print(path)5. 构建Web界面让使用更简单
命令行用着不方便?我们可以用Gradio快速搭建一个Web界面,让老师和学生都能方便地使用。
5.1 完整的Web辅导系统
import gradio as gr from datetime import datetime class WebTutoringSystem: def __init__(self): print("初始化辅导系统...") self.tutor = SubjectTutor() self.analytics = LearningAnalytics(self.tutor) self.conversation_history = [] def chat_with_tutor(self, message, history): """处理用户消息""" if not message.strip(): return "", history # 获取回复 result = self.tutor.adaptive_tutoring(message, self.conversation_history) # 更新历史 self.conversation_history = result["history"] # 格式化为Gradio需要的格式 if not history: history = [] history.append((message, result["response"])) # 记录对话(实际中可以保存到数据库) chat_record = { "time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "question": message, "answer": result["response"], "subject": result["subject"] } return "", history def analyze_homework(self, homework_text): """作业分析""" prompt = f"""请分析以下作业内容,并给出反馈: 作业内容: {homework_text} 请从以下方面分析: 1. 整体完成情况 2. 主要优点 3. 需要改进的地方 4. 具体修改建议 5. 鼓励性评语""" feedback, _ = self.tutor.model.chat(self.tutor.tokenizer, prompt, history=[]) return feedback def generate_quiz(self, subject, topic, difficulty="中等", num_questions=5): """生成测验题目""" prompt = f"""请生成一份{subject}学科的测验卷: 主题:{topic} 难度:{difficulty} 题量:{num_questions}题 要求: 1. 题目类型多样(选择、填空、解答等) 2. 标注每题分值 3. 提供参考答案 4. 注明考察的知识点 5. 难度分布合理""" quiz, _ = self.tutor.model.chat(self.tutor.tokenizer, prompt, history=[]) return quiz def create_web_interface(self): """创建Web界面""" with gr.Blocks(title="智能教育辅导系统", theme=gr.themes.Soft()) as demo: gr.Markdown("# 🎓 智能教育辅导系统") gr.Markdown("欢迎使用AI辅导系统!我可以帮你解答问题、分析作业、生成练习。") with gr.Tab(" 智能辅导"): chatbot = gr.Chatbot(height=500) msg = gr.Textbox( label="输入你的问题", placeholder="例如:什么是二次函数?或者帮我分析这道题...", lines=2 ) clear_btn = gr.Button("清空对话") def respond(message, chat_history): return self.chat_with_tutor(message, chat_history) msg.submit(respond, [msg, chatbot], [msg, chatbot]) clear_btn.click(lambda: None, None, chatbot, queue=False) with gr.Tab(" 作业分析"): homework_input = gr.Textbox( label="粘贴作业内容", placeholder="将学生的作业内容粘贴到这里...", lines=10 ) analyze_btn = gr.Button("分析作业") homework_output = gr.Textbox(label="分析结果", lines=15) analyze_btn.click( self.analyze_homework, inputs=[homework_input], outputs=[homework_output] ) with gr.Tab(" 生成测验"): with gr.Row(): subject_input = gr.Dropdown( ["数学", "语文", "英语", "物理", "化学"], label="学科", value="数学" ) topic_input = gr.Textbox(label="测验主题", placeholder="例如:一次函数") with gr.Row(): difficulty_input = gr.Dropdown( ["简单", "中等", "困难"], label="难度", value="中等" ) num_questions_input = gr.Slider( minimum=3, maximum=20, value=5, step=1, label="题目数量" ) generate_btn = gr.Button("生成测验") quiz_output = gr.Textbox(label="生成的测验", lines=20) generate_btn.click( self.generate_quiz, inputs=[subject_input, topic_input, difficulty_input, num_questions_input], outputs=[quiz_output] ) with gr.Tab(" 学习报告"): gr.Markdown("### 学习数据分析") # 这里可以添加学习进度可视化等 report_output = gr.Textbox( label="学习建议", value="学习报告功能开发中...", lines=10 ) gr.Markdown("---") gr.Markdown("### 使用提示") gr.Markdown(""" 1. 提问时尽量具体,例如:“帮我解方程2x+5=13”比“数学题”更好 2. 可以要求分步骤讲解 3. 支持多学科问题 4. 可以上传作业图片进行分析(需OCR支持) """) return demo # 启动Web服务 if __name__ == "__main__": system = WebTutoringSystem() demo = system.create_web_interface() demo.launch( server_name="0.0.0.0", server_port=7860, share=False # 设置为True可以生成公网链接 )运行这个代码,在浏览器打开http://localhost:7860就能看到一个功能完整的辅导系统界面。它包含四个主要功能:
- 智能辅导:实时问答,支持多轮对话
- 作业分析:粘贴作业内容,获取详细反馈
- 生成测验:根据学科和主题自动生成练习题
- 学习报告:可以扩展为学习进度跟踪
界面看起来挺专业的,实际用起来响应速度也不错。我测试了一下,同时打开多个功能页面,模型都能正常响应。
6. 让模型更懂你的教学内容
如果你有自己学校的教材、题库或者教学大纲,可以通过微调让ChatGLM-6B更懂你的内容。这里我介绍一下基于P-Tuning v2的微调方法。
6.1 准备教学数据
首先,把你的教学资料整理成特定的格式。比如,你可以创建一个JSON文件:
[ { "instruction": "解释勾股定理", "input": "", "output": "勾股定理是数学中的一个基本定理,指直角三角形的两条直角边的平方和等于斜边的平方。用公式表示就是:a² + b² = c²,其中a和b是直角边,c是斜边。这个定理有广泛的应用,比如在建筑、导航、计算机图形学等领域。" }, { "instruction": "解一元二次方程", "input": "x² - 5x + 6 = 0", "output": "解:这是一个一元二次方程。\n1. 先判断判别式:Δ = b² - 4ac = (-5)² - 4×1×6 = 25 - 24 = 1 > 0,有两个不同实根。\n2. 使用求根公式:x = [-b ± √Δ] / 2a = [5 ± 1] / 2\n3. 所以 x₁ = (5+1)/2 = 3, x₂ = (5-1)/2 = 2\n4. 验证:3²-5×3+6=0, 2²-5×2+6=0,正确。" } ]6.2 微调代码示例
import os from transformers import AutoTokenizer, AutoModel import torch from datasets import Dataset def prepare_training_data(data_path): """准备训练数据""" import json with open(data_path, 'r', encoding='utf-8') as f: data = json.load(f) formatted_data = [] for item in data: # 构建训练样本 prompt = f"Instruction: {item['instruction']}\n" if item['input']: prompt += f"Input: {item['input']}\n" prompt += "Output: " formatted_data.append({ "text": prompt + item['output'] }) return Dataset.from_list(formatted_data) def fine_tune_chatglm(): """微调ChatGLM-6B""" # 加载模型和分词器 tokenizer = AutoTokenizer.from_pretrained( "THUDM/chatglm-6b", trust_remote_code=True ) model = AutoModel.from_pretrained( "THUDM/chatglm-6b", trust_remote_code=True ) # 准备数据 print("准备训练数据...") dataset = prepare_training_data("teaching_data.json") # 这里简化了,实际微调需要更多配置 # 可以使用ChatGLM官方提供的P-Tuning v2代码 # 具体参考:https://github.com/THUDM/ChatGLM-6B/tree/main/ptuning print("微调需要较长时间和较多资源...") print("建议参考官方文档进行完整微调") return model, tokenizer if __name__ == "__main__": # 注意:完整微调需要较多GPU资源 # 这里只是展示流程框架 print("教育数据微调流程") print("1. 准备教学数据(JSON格式)") print("2. 使用P-Tuning v2进行高效微调") print("3. 测试微调后的模型") print("4. 部署到生产环境") # 实际微调时,建议使用官方提供的ptuning代码 # 命令示例: # bash train.sh --do_train --train_file teaching_data.json ...微调后,模型在回答你特定教学内容时会更加准确和符合教学要求。不过要注意,微调需要一定的计算资源,如果数据量不大,使用精心设计的提示词也能达到不错的效果。
7. 实际部署考虑
如果你真的想把系统用起来,还需要考虑一些实际部署的问题:
性能优化:如果用户多,可以考虑使用模型量化、推理加速等技术。ChatGLM-6B的INT4量化版本在保持质量的同时,推理速度能快不少。
并发处理:用FastAPI包装模型服务,支持多个用户同时使用。可以设置一个简单的队列系统,避免请求堆积。
内容安全:教育内容要特别注意准确性。可以设置一个审核层,对模型的回答进行二次检查,或者建立常见问题库,优先从库中匹配答案。
数据持久化:把对话记录、错题本、学习进度等保存到数据库,方便后续分析和个性化推荐。
移动端适配:如果学生常用手机,可以考虑开发微信小程序或者简单的H5页面,让访问更方便。
8. 总结
用ChatGLM-6B搭建教育辅导系统,整体体验比预想的要顺畅。模型虽然不大,但在教育这个垂直领域表现挺不错的,特别是对中文的理解和生成,比较符合我们的教学语言习惯。
最大的优点是灵活,你可以根据自己的需求调整提示词,让模型扮演不同风格的教学角色。比如你可以让它当“幽默的数学老师”,或者“严谨的物理教授”,回答的风格会相应变化。
部署成本也相对可控,一块好点的消费级显卡就能跑起来,学校或者教育机构比较容易承受。如果用户量大了,再考虑上云服务或者优化推理速度。
当然也有局限,比如特别专业的竞赛题可能处理不好,或者需要非常精确的步骤时可能出错。这时候就需要人工审核,或者结合传统的题库系统。
不过作为辅助工具,它已经能解决很多实际需求了。学生随时可以提问,老师也能用它批改作业、生成练习题,确实能提高教学效率。如果你也在做教育相关的AI应用,ChatGLM-6B是个不错的起点。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。