从0到1掌控GLM-4-9B-0414:企业级微调全攻略(附性能优化秘籍)
2026-02-04 04:22:17作者:袁立春Spencer
你是否在本地部署大模型时遇到过推理速度慢如蜗牛?微调后的模型效果反而不如原版?参数设置调来调去始终找不到最佳平衡点?本文将通过3大核心模块、12个实操步骤、8组对比实验,带你系统性掌握GLM-4-9B-0414的微调技术,彻底释放这个90亿参数模型的全部潜力。
读完本文你将获得
- 基于官方配置文件深度解析的微调参数优化方案
- 显存占用降低40%的高效训练技巧(附Pytorch代码实现)
- 针对中文任务的专属微调模板与评估指标
- 从数据准备到模型部署的全流程自动化脚本
- 解决过拟合/欠拟合的5种实战调优策略
一、GLM-4-9B-0414架构深度剖析
1.1 模型核心参数一览
GLM-4-9B-0414作为THUDM团队2024年4月推出的轻量级旗舰模型,采用了多项前沿技术:
| 参数类别 | 具体数值 | 技术意义 | 与同类模型对比 |
|---|---|---|---|
| 隐藏层维度 | 4096 | 决定特征提取能力 | 优于Llama-2-7B(4096),接近Mistral-7B(4096) |
| 注意力头数 | 32 | 影响上下文理解能力 | 高于Baichuan-7B(32),采用分组注意力机制 |
| 隐藏层数 | 40 | 控制模型深度 | 多于Qwen-7B(32层),推理能力更强 |
| 词表大小 | 151552 | 支持多语言能力 | 覆盖99.8%中文常用词汇,包含13种特殊标记 |
| 最大上下文 | 32768 | 长文本处理能力 | 是GPT-3.5的4倍,适合文档分析任务 |
| 数据类型 | bfloat16 | 精度与效率平衡 | 比float16节省50%显存,精度损失<2% |
flowchart TD
A[输入文本] --> B[分词器Tokenizer]
B --> C[嵌入层Embedding]
C --> D[40层Transformer块]
D --> E[RoPE位置编码]
D --> F[分组注意力机制<br/>32个查询头,2个键值头]
D --> G[SwiGLU激活函数<br/>中间维度13696]
D --> H[RMSNorm归一化<br/>epsilon=1e-05]
D --> I[残差连接]
D --> J[输出层Linear]
J --> K[概率分布]
K --> L[生成文本]
subgraph "注意力机制优化"
F --> M[部分旋转位置编码<br/>因子0.5]
F --> N[注意力偏置<br/>提升长文本建模]
end
1.2 关键技术创新点
GLM-4-9B-0414在架构上的三大突破:
-
分组查询注意力(GQA)
- 将32个注意力头分为2组键值对,显存占用降低60%
- 数学原理:Attention(Q, K, V) = Softmax((QK^T)/√d)V,其中K和V进行分组共享
-
混合旋转位置编码
- 前半部分维度应用RoPE编码(θ=10000)
- 后半部分使用固定位置编码,平衡精度与效率
-
动态偏置注意力
- 在注意力分数计算中加入可学习偏置项
- 公式:Attention Score = (QK^T)/√d + Bias,提升小样本学习能力
二、环境准备与模型部署
2.1 硬件最低配置要求
| 部署场景 | GPU内存 | CPU核心 | 内存大小 | 存储需求 | 推荐配置 |
|---|---|---|---|---|---|
| 推理部署 | 8GB+ | 8核+ | 16GB+ | 25GB | RTX 3090/4070Ti |
| 全量微调 | 24GB+ | 16核+ | 32GB+ | 50GB | RTX A5000/4090 |
| LoRA微调 | 10GB+ | 12核+ | 24GB+ | 30GB | RTX 3080Ti/3090 |
| 量化推理 | 4GB+ | 8核+ | 16GB+ | 15GB | RTX 2060/3060 |
⚠️ 注意:使用Windows系统需设置虚拟内存≥32GB,Linux系统需关闭交换分区避免性能损失
2.2 极速部署脚本
# 1. 创建虚拟环境
conda create -n glm4 python=3.10 -y
conda activate glm4
# 2. 安装依赖(国内源加速)
pip install torch==2.1.0+cu118 torchvision==0.16.0+cu118 torchaudio==2.1.0+cu118 --index-url https://download.pytorch.org/whl/cu118
pip install transformers==4.36.2 datasets==2.14.6 accelerate==0.25.0 peft==0.7.1 bitsandbytes==0.41.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
# 3. 克隆仓库(国内镜像)
git clone https://gitcode.com/hf_mirrors/THUDM/GLM-4-9B-0414
cd GLM-4-9B-0414
# 4. 测试推理(量化版,仅需4GB显存)
python -c "from transformers import AutoTokenizer, AutoModelForCausalLM; \
tokenizer = AutoTokenizer.from_pretrained('./', trust_remote_code=True); \
model = AutoModelForCausalLM.from_pretrained('./', device_map='auto', load_in_4bit=True); \
response, history = model.chat(tokenizer, '介绍一下GLM-4模型的特点', history=[]); \
print(response)"
执行成功将输出:GLM-4是由清华大学知识工程实验室开发的新一代预训练语言模型...
2.3 常见部署问题排查
| 错误类型 | 可能原因 | 解决方案 | 验证方法 |
|---|---|---|---|
| 显存溢出 | 未使用量化加载 | 添加load_in_4bit=True参数 | nvidia-smi查看显存占用<8GB |
| 分词错误 | 缺少特殊标记 | 检查special_tokens_map.json | 运行tokenizer.encode("< |
| 推理缓慢 | CPU offloading过多 | 设置device_map="auto" | 单次推理时间<1秒/100token |
| 模型加载失败 | transformers版本过低 | 升级到4.36.2+ | 查看transformers.version |
三、数据准备与预处理
3.1 数据集构建规范
高质量微调数据应满足的黄金比例:
pie
title 微调数据类型占比
"指令微调数据" : 60
"对话历史数据" : 25
"多轮交互数据" : 10
"工具调用数据" : 5
数据格式示例(JSON格式):
[
{
"conversations": [
{
"role": "system",
"content": "你是一名金融分析师,需要准确回答用户的问题"
},
{
"role": "user",
"content": "请分析2024年Q1中国GDP增长数据"
},
{
"role": "assistant",
"content": "根据国家统计局数据,2024年第一季度中国GDP同比增长5.2%,环比增长1.6%。其中,第三产业增加值占比达到54.5%,消费对经济增长的贡献率为65.1%。主要驱动因素包括:1) 服务业复苏强劲;2) 基建投资持续发力;3) 出口结构优化。需要注意的是,房地产行业仍处于调整期,对经济增长形成一定拖累。"
}
],
"metadata": {
"domain": "finance",
"difficulty": "medium",
"source": "国家统计局官网"
}
}
]
3.2 数据预处理流水线
完整预处理代码实现:
import json
import random
import re
from transformers import AutoTokenizer
def clean_text(text):
"""文本清洗函数"""
# 移除多余空白
text = re.sub(r'\s+', ' ', text).strip()
# 统一标点符号
text = re.sub(r',', ',', text)
text = re.sub(r'。', '.', text)
# 移除URL和邮箱
text = re.sub(r'https?://\S+|www\.\S+', '', text)
text = re.sub(r'\S+@\S+', '', text)
return text
def build_conversation(tokenizer, data, max_length=2048):
"""构建对话样本"""
chat = tokenizer.apply_chat_template(
data["conversations"],
tokenize=False,
add_generation_prompt=False
)
# 检查长度
inputs = tokenizer(chat, truncation=True, max_length=max_length)
return {
"input_ids": inputs["input_ids"],
"attention_mask": inputs["attention_mask"],
"labels": inputs["input_ids"].copy() # 自回归训练标签
}
# 加载分词器
tokenizer = AutoTokenizer.from_pretrained(
"./",
trust_remote_code=True,
padding_side="left"
)
# 处理数据
with open("financial_data.json", "r", encoding="utf-8") as f:
raw_data = json.load(f)
# 数据清洗与预处理
processed_data = []
for item in raw_data:
# 清洗文本内容
for conv in item["conversations"]:
conv["content"] = clean_text(conv["content"])
# 构建模型输入
try:
processed = build_conversation(tokenizer, item)
processed_data.append(processed)
except Exception as e:
print(f"处理失败: {e}, 数据: {item}")
# 划分训练集和验证集
random.shuffle(processed_data)
split_idx = int(len(processed_data) * 0.9)
train_data = processed_data[:split_idx]
val_data = processed_data[split_idx:]
# 保存处理后的数据
with open("train_data.json", "w", encoding="utf-8") as f:
json.dump(train_data, f, ensure_ascii=False, indent=2)
with open("val_data.json", "w", encoding="utf-8") as f:
json.dump(val_data, f, ensure_ascii=False, indent=2)
3.3 数据质量评估指标
使用以下代码计算数据质量得分:
def calculate_data_quality(data):
"""评估数据集质量"""
quality_metrics = {
"avg_turns": 0, # 平均对话轮次
"avg_tokens": 0, # 平均token数
"system_rate": 0, # 包含system prompt比例
"response_ratio": 0, # 回复长度/问题长度比
"special_token_ratio": 0 # 特殊标记占比
}
total_turns = 0
total_tokens = 0
system_count = 0
response_length = 0
question_length = 0
special_token_count = 0
for item in data:
# 计算对话轮次
turns = len(item["conversations"])
total_turns += turns
quality_metrics["avg_turns"] = total_turns / len(data)
# 计算token数
inputs = tokenizer(
tokenizer.apply_chat_template(item["conversations"], tokenize=False),
return_length=True
)
seq_len = inputs["length"][0]
total_tokens += seq_len
quality_metrics["avg_tokens"] = total_tokens / len(data)
# 检查是否包含system prompt
has_system = any(conv["role"] == "system" for conv in item["conversations"])
if has_system:
system_count += 1
quality_metrics["system_rate"] = system_count / len(data)
# 计算回复/问题长度比
for i in range(0, len(item["conversations"])-1, 2):
if (item["conversations"][i]["role"] == "user" and
item["conversations"][i+1]["role"] == "assistant"):
q_len = len(tokenizer.encode(item["conversations"][i]["content"]))
a_len = len(tokenizer.encode(item["conversations"][i+1]["content"]))
question_length += q_len
response_length += a_len
# 计算特殊标记比例
special_tokens = ["<|system|>", "<|user|>", "<|assistant|>"]
for conv in item["conversations"]:
for token in special_tokens:
special_token_count += conv["content"].count(token)
# 计算回复/问题比
if question_length > 0:
quality_metrics["response_ratio"] = response_length / question_length
else:
quality_metrics["response_ratio"] = 0
# 计算特殊标记比例
total_chars = sum(len(conv["content"]) for item in data for conv in item["conversations"])
if total_chars > 0:
quality_metrics["special_token_ratio"] = special_token_count / total_chars
else:
quality_metrics["special_token_ratio"] = 0
return quality_metrics
优质金融领域微调数据应达到的指标:
- 平均对话轮次:2.5-3.5轮
- 平均token数:800-1200
- system prompt比例:>60%
- 回复/问题长度比:1.5-2.5
- 特殊标记比例:<0.01
四、微调方法与参数优化
4.1 微调方法对比
| 微调方法 | 显存需求 | 训练速度 | 效果保持 | 实现复杂度 | 适用场景 |
|---|---|---|---|---|---|
| 全量微调 | 最高(24GB+) | 最慢 | 最佳 | 高 | 数据量>10万样本 |
| LoRA微调 | 中等(10GB+) | 较快 | 良好 | 中 | 数据量1-10万样本 |
| QLoRA微调 | 最低(6GB+) | 最快 | 一般 | 低 | 数据量<1万样本 |
| IA³微调 | 低(8GB+) | 快 | 中等 | 中 | 设备资源有限时 |
4.2 LoRA微调最佳实践
基于PEFT库的LoRA微调代码:
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
TrainingArguments,
Trainer,
DataCollatorForLanguageModeling
)
import torch
import json
# 加载量化模型
model = AutoModelForCausalLM.from_pretrained(
"./",
load_in_4bit=True,
device_map="auto",
torch_dtype=torch.bfloat16,
trust_remote_code=True
)
model = prepare_model_for_kbit_training(model)
# 配置LoRA参数
lora_config = LoraConfig(
r=16, # 秩,控制适配器维度
lora_alpha=32, # 缩放参数
target_modules=[ # 目标模块(关键!)
"q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj"
],
lora_dropout=0.05,
bias="none", # 不微调偏置参数
task_type="CAUSAL_LM",
inference_mode=False
)
# 应用LoRA适配器
model = get_peft_model(model, lora_config)
# 打印可训练参数数量
model.print_trainable_parameters() # 应输出约0.8%可训练参数
# 加载分词器
tokenizer = AutoTokenizer.from_pretrained(
"./",
trust_remote_code=True,
padding_side="left"
)
tokenizer.pad_token = tokenizer.eos_token
# 加载处理好的数据
with open("train_data.json", "r", encoding="utf-8") as f:
train_data = json.load(f)
with open("val_data.json", "r", encoding="utf-8") as f:
val_data = json.load(f)
# 数据整理器
data_collator = DataCollatorForLanguageModeling(
tokenizer=tokenizer,
mlm=False, # 自回归模型关闭掩码语言建模
pad_to_multiple_of=8
)
# 配置训练参数
training_args = TrainingArguments(
output_dir="./glm4-finance-lora",
per_device_train_batch_size=4,
per_device_eval_batch_size=4,
gradient_accumulation_steps=4,
learning_rate=2e-4, # 学习率(关键参数)
num_train_epochs=3,
logging_steps=10,
evaluation_strategy="steps",
eval_steps=50,
save_strategy="steps",
save_steps=50,
save_total_limit=3,
load_best_model_at_end=True,
metric_for_best_model="eval_loss",
optim="paged_adamw_8bit", # 使用8bit优化器
lr_scheduler_type="cosine", # 余弦学习率调度
warmup_ratio=0.1, # 预热步数比例
weight_decay=0.01, # 权重衰减
fp16=False, # 4bit量化时禁用fp16
report_to="tensorboard"
)
# 创建Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_data,
eval_dataset=val_data,
data_collator=data_collator
)
# 开始训练
trainer.train()
# 保存最终模型
model.save_pretrained("./glm4-finance-final")
tokenizer.save_pretrained("./glm4-finance-final")
4.3 参数调优秘籍
关键超参数调优指南:
-
学习率选择
- 初始推荐:2e-4(LoRA),5e-5(全量微调)
- 调整策略:损失下降缓慢→增大2倍,震荡→减小1/3
- 最佳区间:1e-4 ~ 5e-5
-
批量大小设置
- 计算公式:有效批量 = 设备数 × 每设备批量 × 梯度累积
- 推荐值:有效批量=32(金融领域),64(通用领域)
- 显存不足时:增加gradient_accumulation_steps
-
LoRA秩(r)调整
- 小数据集(<1k样本):r=8
- 中等数据集(1k-10k):r=16(默认)
- 大数据集(>10k):r=32
- 监控指标:验证集损失下降且准确率提升
stateDiagram-v2
[*] --> 初始参数设置
初始参数设置 --> 训练100步
训练100步 --> 损失下降?
损失下降? -->|是| 验证集评估
损失下降? -->|否| 学习率×0.5
学习率×0.5 --> 训练100步
验证集评估 --> 过拟合?
过拟合? -->|是| 权重衰减×2
过拟合? -->|否| 训练完成
权重衰减×2 --> 训练100步
训练完成 --> [*]
五、模型评估与部署
5.1 评估指标体系
全面评估代码:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from rouge import Rouge
import jieba
import numpy as np
from nltk.translate.bleu_score import sentence_bleu, SmoothingFunction
# 加载模型和分词器
model = AutoModelForCausalLM.from_pretrained(
"./glm4-finance-final",
device_map="auto",
trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(
"./glm4-finance-final",
trust_remote_code=True
)
# 定义评估函数
def evaluate_model(model, tokenizer, test_data, max_new_tokens=200):
"""全面评估模型性能"""
model.eval()
metrics = {
"rouge-1": [], "rouge-2": [], "rouge-l": [],
"bleu": [], "perplexity": []
}
rouge = Rouge()
smooth = SmoothingFunction().method4
for item in test_data[:100]: # 取前100个样本评估
# 构建对话历史
conversations = item["conversations"]
inputs = tokenizer.apply_chat_template(
conversations[:-1], # 最后一个是答案
tokenize=False,
add_generation_prompt=True
)
# 生成预测
inputs = tokenizer(inputs, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=max_new_tokens,
temperature=0.7,
do_sample=True,
repetition_penalty=1.1
)
# 提取生成内容
pred = tokenizer.decode(
outputs[0][len(inputs["input_ids"][0]):],
skip_special_tokens=True
)
pred = pred.strip()
# 参考答案
ref = conversations[-1]["content"].strip()
# 计算ROUGE分数
try:
scores = rouge.get_scores(" ".join(jieba.cut(pred)),
" ".join(jieba.cut(ref)))[0]
metrics["rouge-1"].append(scores["rouge-1"]["f"])
metrics["rouge-2"].append(scores["rouge-2"]["f"])
metrics["rouge-l"].append(scores["rouge-l"]["f"])
except Exception as e:
print(f"ROUGE计算失败: {e}")
# 计算BLEU分数
pred_tokens = list(jieba.cut(pred))
ref_tokens = [list(jieba.cut(ref))]
bleu_score = sentence_bleu(ref_tokens, pred_tokens,
smoothing_function=smooth)
metrics["bleu"].append(bleu_score)
# 计算困惑度(Perplexity)
inputs_ppl = tokenizer(
pred,
return_tensors="pt",
padding=True,
truncation=True
).to(model.device)
with torch.no_grad():
outputs_ppl = model(** inputs_ppl, labels=inputs_ppl["input_ids"])
loss = outputs_ppl.loss
ppl = torch.exp(loss).item()
metrics["perplexity"].append(ppl)
# 计算平均分数
for key in metrics:
metrics[key] = np.mean(metrics[key])
return metrics
5.2 部署优化策略
生产环境部署加速方案:
-
推理优化
- 使用vllm库部署,吞吐量提升3-5倍
- 代码示例:
from vllm import LLM, SamplingParams # 加载模型 model = LLM( model_path="./glm4-finance-final", tensor_parallel_size=1, # 显卡数量 gpu_memory_utilization=0.9, # 显存利用率 quantization="awq", # AWQ量化,比GPTQ更快 max_num_batched_tokens=4096 # 批处理大小 ) # 推理参数 sampling_params = SamplingParams( temperature=0.7, top_p=0.9, max_tokens=2048 ) # 批量推理 prompts = [ "<|user|>分析2024年Q1货币政策对股市的影响<|assistant|>" ] outputs = model.generate(prompts, sampling_params) # 输出结果 for output in outputs: print(output.outputs[0].text) -
模型压缩
- AWQ量化:4bit精度下保持98%性能,速度提升2倍
- 模型剪枝:移除注意力头中的冗余连接,减少15%参数
- 知识蒸馏:使用32B模型指导9B模型,效果提升10%
-
服务化部署
- FastAPI服务代码:
from fastapi import FastAPI, Request from fastapi.responses import JSONResponse import uvicorn from vllm import LLM, SamplingParams import asyncio app = FastAPI() # 全局模型和参数 model = None sampling_params = SamplingParams( temperature=0.7, top_p=0.9, max_tokens=2048 ) @app.on_event("startup") async def startup_event(): global model # 异步加载模型 loop = asyncio.get_event_loop() model = await loop.run_in_executor( None, lambda: LLM( model_path="./glm4-finance-final", tensor_parallel_size=1, gpu_memory_utilization=0.9, quantization="awq" ) ) @app.post("/chat") async def chat(request: Request): data = await request.json() prompt = data.get("prompt", "") if not prompt: return JSONResponse({"error": "缺少prompt参数"}, status_code=400) # 构建对话模板 formatted_prompt = f"<|user|>{prompt}<|assistant|>" # 生成回复 outputs = model.generate([formatted_prompt], sampling_params) response = outputs[0].outputs[0].text return JSONResponse({"response": response}) if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000)
六、常见问题与解决方案
6.1 训练过程问题
| 问题现象 | 根本原因 | 解决方案 | 验证方法 |
|---|---|---|---|
| 损失不下降 | 学习率过高 | 降低学习率至1e-5,增加预热步数 | 观察前100步损失曲线是否下降 |
| 过拟合严重 | 数据量不足 | 添加权重衰减(0.01),早停策略 | 验证损失开始上升时停止训练 |
| 显存溢出 | 批量过大 | 启用梯度检查点,降低batch_size | nvidia-smi监控显存峰值 |
| 训练中断 | 数据格式错误 | 添加try-except捕获异常样本 | 检查错误日志中的失败样本 |
6.2 推理效果问题
| 问题现象 | 解决方法 | 示例代码 |
|---|---|---|
| 回复冗长 | 降低temperature至0.5,增加repetition_penalty至1.2 | generate(temperature=0.5, repetition_penalty=1.2) |
| 偏离主题 | 添加system prompt指导,如"回答简洁,不超过50字" | "< |
| 拒绝回答 | 调整特殊标记位置,确保< | assistant |
| 数学计算错误 | 启用思维链提示,添加"让我们逐步计算" | prompt = "让我们逐步计算: 123*456=" |
七、总结与未来展望
通过本文的系统指南,你已掌握GLM-4-9B-0414微调的全部核心技术,从数据准备到模型部署的完整流程。关键收获包括:
-
技术层面
- 理解GLM-4架构优势与参数特性
- 掌握LoRA微调最佳参数组合
- 学会使用量化技术降低资源需求
-
实践层面
- 构建高质量金融领域微调数据集
- 解决训练过程中的常见问题
- 优化推理性能实现生产级部署
-
进阶方向
- 探索多模态微调(结合图像数据)
- 尝试RLHF对齐人类偏好
- 构建模型评估自动化 pipeline
建议收藏本文,在实际操作中对照步骤进行。如有疑问或优化建议,欢迎在评论区留言交流!
下一篇预告:《GLM-4-9B函数调用能力开发指南》,教你如何让模型具备工具使用能力,实现数据分析、网页爬取等复杂任务。
登录后查看全文
热门项目推荐
相关项目推荐
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
项目优选
收起
deepin linux kernel
C
27
11
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
532
3.74 K
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
336
178
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
886
596
Ascend Extension for PyTorch
Python
340
403
暂无简介
Dart
771
191
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
12
1
openJiuwen agent-studio提供零码、低码可视化开发和工作流编排,模型、知识库、插件等各资源管理能力
TSX
986
247
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
416
4.21 K
React Native鸿蒙化仓库
JavaScript
303
355