当前位置: 首页 > article >正文

FastAPI 2.0流式AI接口上线前必须做的4项压力测试:QPS突破1200+的实测阈值与熔断配置清单

第一章FastAPI 2.0流式AI接口压力测试全景认知FastAPI 2.0 引入了对异步流式响应如StreamingResponse的深度优化使大语言模型LLM类接口可原生支持 Server-Sent EventsSSE、分块传输编码chunked encoding与实时 token 流式返回。在高并发场景下此类接口的性能瓶颈不再局限于 CPU 或模型推理本身而更多暴露于事件循环调度、内存缓冲管理、客户端连接保活及反向代理如 Nginx、Traefik的流式兼容性上。核心压力维度连接并发数Connection Concurrency模拟千级长连接持续接收流式 token请求吞吐率RPS单位时间内发起的新流式请求频次端到端延迟分布p50/p95/p99从POST /chat到首个 token 及末尾data: [DONE]的耗时内存驻留增长验证是否存在async generator未及时 GC 导致的内存泄漏典型流式接口定义示例# app/main.pyFastAPI 2.0 from fastapi import FastAPI from fastapi.responses import StreamingResponse import asyncio app FastAPI() async def fake_llm_stream(): for token in [Hello, , world, !, \n]: yield fdata: {token}\n\n await asyncio.sleep(0.1) # 模拟 token 生成间隔 app.post(/v1/chat/completions) async def stream_chat(): return StreamingResponse( fake_llm_stream(), media_typetext/event-stream, headers{X-Accel-Buffering: no} # 关键禁用 Nginx 缓冲 )主流压测工具能力对比工具原生支持 SSE连接复用内存占用可控适用场景vegeta否需定制 handler是高Go runtime 内存稳定基准吞吐压测k6是http.stream()是HTTP/1.1 keep-alive中VU 隔离良好真实用户行为建模第二章异步流式响应底层机制与性能瓶颈诊断2.1 asyncio事件循环与StreamingResponse生命周期剖析事件循环绑定时机StreamingResponse在初始化时并不立即注册到事件循环而是在响应被实际写入时即调用stream迭代器的首个yield由Starlette内部触发loop.create_task()启动异步流协程。核心生命周期阶段挂起阶段响应对象创建后等待首次await write()调用激活阶段事件循环调度流协程开始执行生成器终止阶段客户端断连或生成器耗尽触发__aexit__清理资源底层协程调度示意async def stream_response(): # 此协程由事件循环调度执行 for chunk in data_source: yield chunk # 每次yield触发一次write()和事件循环让出 await asyncio.sleep(0) # 显式让出控制权避免阻塞事件循环该协程中await asyncio.sleep(0)确保每次产出数据后主动交还CPU使事件循环可处理其他任务如心跳检测、超时中断是维持长连接稳定的关键机制。2.2 大模型Token流生成中的协程阻塞点识别与实测定位典型阻塞场景还原在流式生成中io.Copy 与 bufio.Writer.Flush() 常构成隐式同步瓶颈func streamTokens(w io.Writer, tokens -chan string) { bw : bufio.NewWriter(w) for t : range tokens { bw.WriteString(t) if err : bw.Flush(); err ! nil { // ⚠️ 阻塞点底层write系统调用 log.Printf(flush error: %v, err) return } } }bw.Flush() 触发内核写操作若下游连接慢如高延迟WebSocket将阻塞当前goroutine导致token生产协程停滞。实测定位方法使用 pprof 的 goroutine profile 捕获阻塞态 goroutine 栈注入 runtime.SetBlockProfileRate(1) 启用阻塞事件采样阻塞耗时对比表操作平均阻塞时长ms触发条件net.Conn.Write12.7TCP发送缓冲区满bufio.Writer.Flush8.3未启用WriteBuffer或小buffer2.3 HTTP/1.1分块传输与HTTP/2服务器推送的吞吐差异压测对比压测环境配置客户端wrk12线程持续30skeepalive启用服务端Nginx 1.25 OpenSSL 3.0HTTP/2 over TLS 1.3响应体动态生成1MB文本流模拟实时日志输出关键性能指标对比协议特性平均吞吐MB/s首字节延迟ms连接复用率HTTP/1.1 分块传输Transfer-Encoding: chunked42.3861.0单请求单连接HTTP/2 服务器推送Push Promise97.8218.7多路复用预加载服务端推送逻辑示例location /api/logstream { http2_push /assets/style.css; http2_push /assets/app.js; proxy_pass http://backend; chunked_transfer_encoding on; }Nginx 配置中显式声明推送资源避免客户端重复请求http2_push指令在初始响应前触发 Push Promise 帧实现零RTT资源预载。注意仅对同源、可缓存资源生效且需客户端支持 SETTINGS_ENABLE_PUSH1。2.4 内存泄漏检测基于tracemallocasyncio.Task监控的流式内存快照分析核心监控架构通过周期性采集tracemalloc快照并关联活跃asyncio.Task实例构建带上下文的内存增长归因链。import tracemalloc tracemalloc.start(25) # 保存25层调用栈平衡精度与开销 snapshot1 tracemalloc.take_snapshot() # 后续 snapshot2 与之对比获取增量分配参数25表示最大回溯深度过低则无法定位协程启动点过高增加采样延迟。快照本身不阻塞事件循环适合异步环境轻量嵌入。任务-内存关联策略遍历asyncio.all_tasks()获取当前活跃 Task 对象提取其get_coro().__code__.co_filename和行号映射至 tracemalloc 分配位置按文件行号聚合内存增长量生成热点任务排名表增量快照对比结果示例文件行号新增分配KiB关联 Task 数data_loader.py8712403cache.py4296012.5 流式响应延迟归因从LLM推理层→FastAPI中间件→ASGI服务器的全链路时序打点实践全链路打点核心策略在请求生命周期关键节点注入高精度时间戳time.perf_counter_ns()覆盖 LLM 推理起止、中间件出入、ASGI send 调用等 7 个语义锚点。FastAPI 中间件时序埋点示例class TimingMiddleware(BaseHTTPMiddleware): async def dispatch(self, request: Request, call_next): request.state.start_ns time.perf_counter_ns() response await call_next(request) # 记录 ASGI send 完成时间 response.headers[X-Response-Time-NS] str(time.perf_counter_ns()) return response该中间件捕获请求进入与响应写出的时间边界request.state 确保上下文隔离X-Response-Time-NS 为纳秒级延迟提供原始数据源。各层延迟分布参考层级典型延迟范围可观测手段LLM 推理300–2500 ms模型 forward hook CUDA eventFastAPI 中间件0.2–5 msrequest.state 时间差ASGI 服务器Uvicorn1–20 msaccess log custom lifespan hooks第三章QPS突破1200的关键调优策略3.1 uvicorn高并发配置workers、loop、http、limit-concurrency参数组合调优实录核心参数协同作用机制Uvicorn 的并发能力并非单一参数决定而是workers进程、loop事件循环、http协议实现与limit-concurrency请求节流四者动态博弈的结果。典型生产级启动命令uvicorn app:app \ --workers 4 \ --loop uvloop \ --http httptools \ --limit-concurrency 100 \ --timeout-keep-alive 5--workers 4启用 4 个 worker 进程适配 4 核 CPU--loop uvloop替换默认 asyncio 事件循环提升 I/O 调度效率--http httptools启用 C 实现的 HTTP 解析器降低解析开销--limit-concurrency 100防止单 worker 过载保障响应稳定性。参数影响对比参数取值建议适用场景workers2 × CPU 核心数CPU-bound 服务limit-concurrency80–120I/O 密集型 API3.2 异步数据库连接池与向量检索服务的非阻塞集成模式AsyncPG Qdrant AsyncClient核心集成架构采用双异步客户端协同调度AsyncPG 管理关系型数据读写QdrantAsyncClient处理向量相似性检索二者共享同一事件循环避免线程切换开销。典型协程调用示例async def hybrid_search(user_id: int, query_vec: List[float]): async with pool.acquire() as conn: # AsyncPG 连接池复用 metadata await conn.fetchrow(SELECT * FROM users WHERE id $1, user_id) # 并发执行向量检索非阻塞 results await qdrant_client.search( collection_nameuser_embeddings, query_vectorquery_vec, limit5, with_payloadTrue ) return {**dict(metadata), matches: [r.payload for r in results]}该协程通过pool.acquire()获取连接qdrant_client.search()使用 aiohttp 底层异步 HTTP 客户端全程无await asyncio.to_thread()降级操作。性能对比TPS 100 并发方案平均延迟(ms)吞吐(QPS)同步阻塞集成21845.2AsyncPG Qdrant AsyncClient67148.93.3 流式中间件轻量化改造移除同步日志/鉴权阻塞构建纯异步上下文传播链阻塞点识别与解耦策略传统流式中间件在请求入口处串联同步日志记录与 RBAC 鉴权导致平均延迟上升 42ms压测数据。改造核心是将二者下沉至非关键路径仅保留上下文透传能力。异步上下文传播链实现// 基于 context.WithValue 构建无锁传播链 ctx context.WithValue(ctx, traceID, traceID) ctx context.WithValue(ctx, userID, userID) // 后续异步 goroutine 中可安全读取 go func(ctx context.Context) { logAsync(ctx.Value(traceID).(string), processed) }(ctx)该模式避免了 sync.Mutex 竞争所有上下文值通过 immutable context 传递确保跨 goroutine 安全性与零拷贝。改造效果对比指标改造前改造后P99 延迟68ms19ms吞吐量QPS12.4k41.7k第四章熔断降级与弹性保障体系构建4.1 基于aiolimiter与tenacity的请求级速率熔断与指数退避重试策略核心组件协同机制aiolimiter 提供异步速率限制能力tenacity 实现带状态感知的重试逻辑。二者组合可实现请求粒度的“限流熔断退避”闭环控制。典型集成代码from aiolimiter import AsyncLimiter from tenacity import retry, stop_after_attempt, wait_exponential, retry_if_exception_type limiter AsyncLimiter(10, 1) # 每秒最多10个请求 retry( stopstop_after_attempt(3), waitwait_exponential(multiplier1, min1, max10), retryretry_if_exception_type((aiohttp.ClientError, asyncio.TimeoutError)) ) async def fetch_with_backoff(url): async with limiter: async with aiohttp.ClientSession() as session: async with session.get(url) as resp: return await resp.json()该装饰器确保单请求在限流约束下最多重试3次退避间隔为1s→2s→4s指数增长避免雪崩式重试冲击下游。策略参数对照表参数作用推荐值max_rate单位时间最大请求数5–50 QPSmultiplier退避基数1–24.2 模型服务健康度探针设计结合OpenTelemetry指标实现动态熔断阈值调整探针核心职责健康探针持续采集模型服务的延迟 P95、错误率、请求吞吐量及 GPU 显存占用率通过 OpenTelemetry SDK 上报至后端指标系统。动态阈值计算逻辑func computeDynamicThreshold(metrics *otlp.MetricSet) float64 { // 基于近10分钟P95延迟滑动窗口与标准差动态扩展 base : metrics.LatencyP95 stdDev : metrics.LatencyStdDev return base 2.0*stdDev // 2σ原则保障鲁棒性 }该函数以实时统计偏差为依据避免固定阈值在流量突增或模型冷启时误触发熔断。熔断策略联动机制当错误率 动态延迟阈值对应的安全上限时自动降级至轻量模型连续3次探针检测达标后渐进式恢复全量服务4.3 流式降级兜底方案预缓存高频Query响应渐进式Token截断fallback机制高频Query预缓存策略对日均调用量 5000 的 Query 模板建立 LRU-2 缓存池TTL 动态设为 90s基于 P95 响应延迟反推。渐进式Token截断逻辑// fallback.go func truncateTokens(tokens []string, budget int) []string { if len(tokens) budget { return tokens } // 优先保留 query head tail中间按步长跳过 step : (len(tokens) - budget 1) / (budget - 1) var kept []string for i : 0; i len(tokens) len(kept) budget; i max(1, step) { kept append(kept, tokens[i]) } return kept }该函数确保在 token 预算超限时以非均匀方式保留语义关键片段首尾强相关step 参数动态适配截断强度。降级效果对比策略平均延迟(ms)准确率下降全量推理12800%预缓存截断2102.3%4.4 分布式熔断状态同步Redis Stream驱动的跨实例熔断信号广播与恢复协调核心设计动机单体熔断器无法感知集群中其他节点的状态易导致“局部熔断、全局雪崩”。Redis Stream 提供了天然的持久化、多消费者组、按序投递能力成为跨实例熔断信号广播的理想载体。数据同步机制服务实例将熔断变更以结构化事件写入stream:circuit-breaker各节点通过独立消费者组监听并更新本地状态client.XAdd(ctx, redis.XAddArgs{ Key: stream:circuit-breaker, ID: *, Values: map[string]interface{}{ service: payment-svc, state: OPEN, ts: time.Now().UnixMilli(), reason: 5xx_rate0.5, }, })该操作原子写入带时间戳的不可变事件ID: *由 Redis 自动生成单调递增ID保障全局有序Values字段为熔断决策的关键上下文供下游做一致性恢复判断。状态协同流程所有实例订阅同一 Stream但归属不同消费者组如group-instance-001避免消息竞争收到OPEN事件后本地熔断器立即切换并启动带 jitter 的恢复探测窗口当任一实例探测成功并发布CLOSED事件其余实例在下一个心跳周期内完成状态收敛第五章生产环境流式AI服务稳定性交付清单流式AI服务在实时推理、语音转写、智能客服等场景中对延迟、吞吐与容错提出严苛要求。某金融客户上线LLM流式摘要服务后遭遇突发流量下gRPC连接雪崩平均P99延迟从320ms飙升至4.7s。可观测性增强配置集成OpenTelemetry SDK注入span context至每个token chunk的HTTP/2 trailer headers按stream_id打标Prometheus指标区分warmup、active、stale三类会话状态资源弹性保障策略# Kubernetes HPA v2 配置基于自定义指标 metrics: - type: Pods pods: metric: name: stream_active_tokens_per_second target: type: AverageValue averageValue: 1200故障隔离关键检查项检查维度阈值自动响应动作单GPU显存占用率92%触发token queue限流拒绝新stream握手连续token输出间隔方差850ms标记为slow-stream并降权调度至专用队列流控熔断实战参数动态令牌桶算法Go实现// 每stream独立桶burst3×base_rpsrefill每100ms type StreamLimiter struct { bucket *tokenbucket.Bucket mu sync.RWMutex } func (l *StreamLimiter) Allow() bool { l.mu.RLock() defer l.mu.RUnlock() return l.bucket.TakeAvailable(1) 1 }

相关文章:

FastAPI 2.0流式AI接口上线前必须做的4项压力测试:QPS突破1200+的实测阈值与熔断配置清单

第一章:FastAPI 2.0流式AI接口压力测试全景认知FastAPI 2.0 引入了对异步流式响应(如 StreamingResponse)的深度优化,使大语言模型(LLM)类接口可原生支持 Server-Sent Events(SSE)、…...

5个步骤掌握LibreCAD跨平台部署:从安装到精通的开源解决方案指南

5个步骤掌握LibreCAD跨平台部署:从安装到精通的开源解决方案指南 【免费下载链接】LibreCAD LibreCAD is a cross-platform 2D CAD program written in C17. It can read DXF/DWG files and can write DXF/PDF/SVG files. It supports point/line/circle/ellipse/pa…...

如何快速为AMD 780M APU解锁隐藏性能:完整优化教程

如何快速为AMD 780M APU解锁隐藏性能:完整优化教程 【免费下载链接】ROCmLibs-for-gfx1103-AMD780M-APU ROCm Library Files for gfx1103 and update with others arches based on AMD GPUs for use in Windows. 项目地址: https://gitcode.com/gh_mirrors/ro/RO…...

别再只会看原理图了!用Multisim仿真带你深入理解运放的“虚短虚断”与反馈

用Multisim仿真破解运放"虚短虚断"的底层逻辑 在电子电路设计中,运算放大器就像一位沉默的魔术师,用"虚短"和"虚断"两个基本概念演绎着各种精妙的信号处理戏法。但很多工程师在学习阶段只是机械记忆这两个术语&#xff0c…...

DeerFlow2.0 Docker + 本地 Ollama qwen3.5:9b 部署指南

DeerFlow2.0 Docker 本地 Ollama qwen3.5:9b 部署指南 实现 Token 自由!!!本地模型免费 :) 1. 前提条件 Windows 11 家庭版(版本号 25H2)Docker Desktop 已安装并运行WSL2 已安装并配置Olla…...

如何用Obsidian Image Converter实现图像高效管理?超实用技巧分享

如何用Obsidian Image Converter实现图像高效管理?超实用技巧分享 【免费下载链接】obsidian-image-converter ⚡️ Convert, compress, resize, annotate, markup, draw, crop, rotate, flip, align images directly in Obsidian. Drag-resize, rename with variab…...

如何降低ai率?盘点3个降ai率神器与5个手改技巧,降aigc全流程解析!

最近我发现很多同学都在苦恼ai率这件事,后台发来的截图里,那报告,简直红得触目惊心。 现在的系统早已是next level,不是看你用了什么词,而是在分析你的文本生成逻辑。今天这篇文章,我不讲虚的,…...

Allegro PCB设计必备:3分钟搞定带钻孔数据的DXF文件导出(附常见错误排查)

Allegro PCB设计实战:高效导出带钻孔数据的DXF文件全攻略 在PCB设计领域,Allegro作为行业标杆工具,其文件输出质量直接关系到生产制造的准确性。特别是当设计需要与其他CAD系统协作或提交给PCB制造商时,DXF文件的完整性至关重要。…...

ARM Cortex-M嵌入式通用头文件sarmfsw深度解析

1. sarmfsw项目概述sarmfsw(ARM-based Common Headers)是一个面向ARM Cortex-M系列微控制器的轻量级、跨平台通用头文件集合。它并非传统意义上的功能库,而是一套经过工程验证的类型定义(typedefs)、宏(mac…...

CVE-2024-36401复现

一.漏洞概述 CVE-2024-36401 是 GeoServer 中的一个严重级远程代码执行漏洞(CVSS 9.8),允许未经身份验证的远程攻击者在服务器上执行任意代码。该漏洞源于 GeoServer 调用的 GeoTools 库 API 在评估 XPath 表达式时存在不安全处理&#xff0…...

TradingAgents-CN 多智能体金融分析系统:企业级容器化部署实战指南

TradingAgents-CN 多智能体金融分析系统:企业级容器化部署实战指南 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN TradingAgents-CN…...

Windows 10/11下用StyleGAN2-ADA-PyTorch训练自己的数据集(避坑Visual Studio编译错误)

Windows平台StyleGAN2-ADA-PyTorch环境配置全指南:从编译错误到自动化训练 在Windows 10/11上配置StyleGAN2-ADA-PyTorch环境时,许多开发者都会遇到Visual Studio编译工具链缺失的经典问题。不同于Linux系统的开箱即用,Windows环境需要额外处…...

AutoRaise:macOS窗口悬停管理的技术实现与配置指南

AutoRaise:macOS窗口悬停管理的技术实现与配置指南 【免费下载链接】AutoRaise AutoRaise (and focus) a window when hovering over it with the mouse 项目地址: https://gitcode.com/gh_mirrors/au/AutoRaise AutoRaise是一款基于Objective-C开发的macOS窗…...

CoPaw个人助理深度体验:多通道对话+定时执行,解放双手的实用工具

CoPaw个人助理深度体验:多通道对话定时执行,解放双手的实用工具 1. CoPaw简介与核心功能 CoPaw是一款基于Qwen3-4B-Instruct-2507模型的个人助理型产品,由AgentScope团队开发。它最大的特点是能够部署在用户自己的环境中,实现数…...

Wan2.2-I2V-A14B实战案例:地方政府生成‘乡村振兴’政策解读动画短视频系列

Wan2.2-I2V-A14B实战案例:地方政府生成乡村振兴政策解读动画短视频系列 1. 项目背景与需求分析 近年来,随着数字政务的快速发展,各级地方政府越来越重视利用新媒体技术进行政策宣传。某地方政府计划开展"乡村振兴"系列政策解读工…...

主体代码分析

一、整体架构分析这个程序是一个图片管理工具,采用MVC模式的变体,分为:UI层:界面定义(ui_image_manager.py,由Qt Designer生成)逻辑层:当前文件的业务逻辑业务层:busines…...

别再花冤枉钱!和腰突颈椎病斗了 3 年,我终于踩中了康复的捷径

有没有和我一样的打工人,每天久坐 8 小时起步,下班就低头刷手机,年纪轻轻颈椎腰椎先 “垮了”? 从最开始的脖子发酸、腰部发僵,到后来疼到睡不着觉、手麻到握不住鼠标,甚至走路都直不起腰,这 3…...

Ollama+Qwen2.5-VL搭建教程:打造你的智能视觉分析工具

OllamaQwen2.5-VL搭建教程:打造你的智能视觉分析工具 1. 引言:为什么选择Qwen2.5-VL 在当今AI技术快速发展的时代,视觉-语言多模态模型正成为解决复杂问题的关键工具。Qwen2.5-VL-7B-Instruct作为通义千问系列的最新成员,在视觉…...

专业安防怎么选?奥尔特云与普通摄像头核心性能对比

不少人认为安防摄像头只是“能录像、能看见”就够,选型无需太过考究,实则这是安防系统搭建的关键误区。安防系统的核心是精准感知、有效采集,而摄像头作为前端核心采集设备,是所有安防数据的源头。若源头的画面质量、感知能力不达…...

告别桌面图标混乱:NoFences让你的数字空间井然有序

告别桌面图标混乱:NoFences让你的数字空间井然有序 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否曾打开电脑就被满屏散乱的图标淹没?工作文件…...

视频号推客模式系统小程序开发

开发一个基于微信视频号的推客模式系统小程序,需要结合微信生态的开放能力和推客(分销)模式的业务逻辑。以下是关键开发要点:微信小程序与视频号打通通过微信开放平台的JS-SDK实现小程序与视频号的互联互通。调用wx.openChannelsA…...

算法模拟类题目解析

前言:最近开始偏系统的从简单到难一步步刷算法题,先从模拟题开始,下边附带题目与连接,感兴趣可刷刷也可看看我的思路。 一.字符串展开 链接:https://ac.nowcoder.com/acm/problem/16644 来源:牛客网 题意…...

华为云AI开发认证HCCDA通关指南:从试题解析到实战应用

1. 华为云HCCDA认证:AI开发者的黄金敲门砖 最近两年,AI技术在各行各业的应用越来越广泛,很多开发者都在寻找能够系统学习AI开发的途径。华为云推出的HCCDA(Huawei Cloud Certified Developer Associate)认证&#xff0…...

从黑客攻防角度看网络命令:如何用ping/tracert/nslookup发现网络安全隐患

网络命令的攻防实战:用基础工具发现隐藏的安全威胁 当大多数人还在把ping、tracert这些基础网络命令当作简单的连通性测试工具时,安全工程师已经将它们变成了发现网络威胁的"显微镜"。这些看似简单的命令行工具,在专业的安全分析场…...

MT5 Zero-Shot参数详解:Temperature与Top-P对中文改写多样性的影响

MT5 Zero-Shot参数详解:Temperature与Top-P对中文改写多样性的影响 1. 项目概述 MT5 Zero-Shot Chinese Text Augmentation 是一个基于 Streamlit 和阿里达摩院 mT5 模型构建的本地化 NLP 工具。这个工具专门用于中文句子的语义改写和数据增强,能够在保…...

别再折腾了!保姆级AirSim+UE5.3安装配置指南(附常见编译错误解决)

AirSim与虚幻引擎5.3深度整合:从零搭建自动驾驶仿真环境的完整实践 在自动驾驶技术快速发展的今天,仿真环境已成为算法开发与测试不可或缺的一环。微软开源的AirSim作为一个高度逼真的仿真平台,与虚幻引擎5.3的结合为开发者提供了前所未有的视…...

别只盯着协议!用TC8测试案例深度解读车载网络中的ARP与ICMP:安全与稳定的隐藏关卡

车载以太网底层协议实战:从TC8测试案例看ARP与ICMP的安全设计 当一辆现代汽车以100km/h行驶时,其车载网络每秒需要处理超过5000条网络报文。这些报文中的绝大多数,都由ARP和ICMP这样的基础协议承载。在传统IT领域被视为"简单"的协议…...

Marp CLI元数据管理:如何优化SEO和社交媒体分享

Marp CLI元数据管理:如何优化SEO和社交媒体分享 【免费下载链接】marp-cli A CLI interface for Marp and Marpit based converters 项目地址: https://gitcode.com/gh_mirrors/ma/marp-cli Marp CLI是一款强大的命令行工具,让你仅用纯Markdown就…...

广东省高级会计师评审辅导知名品牌

在职业发展的道路上,专业资格认证是许多财务从业者提升自我、拓宽职业路径的重要一环。广东省高级会计师评审,作为一项专业性强、要求严格的职业能力认定,其准备过程需要系统性的指导与支持。中山力朗教育咨询有限公司,作为一家立…...

3步掌握AI模型训练:让新手也能玩转个性化Stable Diffusion模型

3步掌握AI模型训练:让新手也能玩转个性化Stable Diffusion模型 【免费下载链接】sd-trainer 项目地址: https://gitcode.com/gh_mirrors/sd/sd-trainer 在数字创意领域,AI绘画模型训练曾是一道高不可攀的技术门槛。设计师面对复杂的代码配置望而…...