Replicate Python client
本文翻译整理自:https://github.com/replicate/replicate-python
文章目录
- 一、关于 Replicate Python 客户端
- 相关链接资源
- 关键功能特性
- 二、1.0.0 版本的重大变更
- 三、安装与配置
- 1、系统要求
- 2、安装
- 3、认证配置
- 四、核心功能
- 1、运行模型
- 2、异步IO支持
- 3、流式输出模型
- 4、后台运行模型
- 5、后台运行模型并获取Webhook
- 6、组合模型管道
- 7、获取运行中模型的输出
- 8、取消预测
- 9、列出预测
- 10、加载输出文件
- FileOutput 对象
- 11、列出模型
- 12、创建模型
- 13、微调模型
- 14、自定义客户端行为
- 五、开发
一、关于 Replicate Python 客户端
这是一个用于 Replicate 的 Python 客户端库,允许您从 Python 代码或 Jupyter Notebook 中运行模型,并在 Replicate 平台上执行各种操作。
相关链接资源
- github : https://github.com/replicate/replicate-python
- 官网:https://replicate.com
- 官方文档:https://replicate.com/docs
- 训练API文档:https://replicate.com/docs/fine-tuning
- Webhooks文档:https://replicate.com/docs/webhooks
- 流式输出文档:https://replicate.com/docs/streaming
- Colab教程:https://colab.research.google.com/drive/1K91q4p-OhL96FHBAVLsv9FlwFdu6Pn3c
关键功能特性
- 运行模型预测
- 流式输出处理
- 后台模型执行
- 模型管道组合
- 训练自定义模型
- 预测管理(取消/列表)
- 异步IO支持
- Webhook集成
二、1.0.0 版本的重大变更
1.0.0 版本包含以下破坏性变更:
- 对于输出文件的模型,
replicate.run()
方法现在默认返回FileOutput
对象而非 URL 字符串。FileOutput
实现了类似httpx.Response
的可迭代接口,使文件处理更高效。
如需恢复旧行为,可通过传递 use_file_output=False
参数禁用 FileOutput
:
output = replicate.run("acmecorp/acme-model", use_file_output=False)
在大多数情况下,更新现有应用程序以调用 output.url
即可解决问题。
但我们建议直接使用 FileOutput
对象,因为我们计划对该 API 进行进一步改进,这种方法能确保获得最快的处理结果。
[!TIP]
👋 查看本教程的交互式版本:Google Colabhttps://colab.research.google.com/drive/1K91q4p-OhL96FHBAVLsv9FlwFdu6Pn3c
三、安装与配置
1、系统要求
- Python 3.8+
2、安装
pip install replicate
3、认证配置
在使用 API 运行任何 Python 脚本前,需设置环境变量中的 Replicate API 令牌。
从 replicate.com/account 获取令牌并设置为环境变量:
export REPLICATE_API_TOKEN=<your token>
我们建议不要直接将令牌添加到源代码中,因为您不希望将凭证提交到版本控制系统。如果任何人使用您的 API 密钥,其使用量将计入您的账户。
四、核心功能
1、运行模型
创建新的 Python 文件并添加以下代码,替换为您自己的模型标识符和输入:
>>> import replicate
>>> outputs = replicate.run("black-forest-labs/flux-schnell", input={"prompt": "astronaut riding a rocket like a horse"})
[<replicate.helpers.FileOutput object at 0x107179b50>]
>>> for index, output in enumerate(outputs):with open(f"output_{index}.webp", "wb") as file:file.write(output.read())
如果预测失败,replicate.run
会抛出 ModelError
异常。您可以通过异常的 prediction
属性获取更多失败信息。
import replicate
from replicate.exceptions import ModelErrortry:output = replicate.run("stability-ai/stable-diffusion-3", { "prompt": "An astronaut riding a rainbow unicorn" })
except ModelError as eif "(some known issue)" in e.prediction.logs:passprint("Failed prediction: " + e.prediction.id)
[!NOTE]
默认情况下,Replicate 客户端会保持连接打开最多 60 秒,等待预测完成。这种设计是为了优化模型输出返回客户端的速度。可通过传递
wait=x
给replicate.run()
来配置超时,其中x
是 1 到 60 秒之间的超时值。要禁用同步模式,可传递wait=False
。
2、异步IO支持
通过在方法名前添加 async_
前缀,您也可以异步使用 Replicate 客户端。
以下是并发运行多个预测并等待它们全部完成的示例:
import asyncio
import replicate# https://replicate.com/stability-ai/sdxl
model_version = "stability-ai/sdxl:39ed52f2a78e934b3ba6e2a89f5b1c712de7dfea535525255b1aa35c5565e08b"
prompts = [f"A chariot pulled by a team of {count} rainbow unicorns"for count in ["two", "four", "six", "eight"]
]async with asyncio.TaskGroup() as tg:tasks = [tg.create_task(replicate.async_run(model_version, input={"prompt": prompt}))for prompt in prompts]results = await asyncio.gather(*tasks)
print(results)
对于需要文件输入的模型,您可以传递互联网上可公开访问文件的 URL,或本地设备上的文件句柄:
>>> output = replicate.run("andreasjansson/blip-2:f677695e5e89f8b236e52ecd1d3f01beb44c34606419bcc19345e046d8f786f9", input={ "image": open("path/to/mystery.jpg") })"an astronaut riding a horse"
3、流式输出模型
Replicate 的 API 支持语言模型的服务器发送事件流(SSEs)。使用 stream
方法可以实时消费模型生成的标记。
import replicatefor event in replicate.stream("meta/meta-llama-3-70b-instruct", input={"prompt": "Please write a haiku about llamas.", }, ):print(str(event), end="")
[!TIP]
某些模型如 meta/meta-llama-3-70b-instruct 不需要版本字符串。您始终可以参考模型页面上的 API 文档了解具体细节。
您也可以流式传输已创建预测的输出。这在您希望将预测 ID 与其输出分开时很有用。
prediction = replicate.predictions.create(model="meta/meta-llama-3-70b-instruct", input={"prompt": "Please write a haiku about llamas."}, stream=True, )for event in prediction.stream():print(str(event), end="")
更多信息请参阅 Replicate 文档中的"流式输出"。
4、后台运行模型
您可以使用异步模式在后台启动并运行模型:
>>> model = replicate.models.get("kvfrans/clipdraw")
>>> version = model.versions.get("5797a99edc939ea0e9242d5e8c9cb3bc7d125b1eac21bda852e5cb79ede2cd9b")
>>> prediction = replicate.predictions.create(version=version, input={"prompt":"Watercolor painting of an underwater submarine"})>>> prediction
Prediction(...)>>> prediction.status
'starting'>>> dict(prediction)
{"id": "...", "status": "starting", ...}>>> prediction.reload()
>>> prediction.status
'processing'>>> print(prediction.logs)
iteration: 0, render:loss: -0.6171875
iteration: 10, render:loss: -0.92236328125
iteration: 20, render:loss: -1.197265625
iteration: 30, render:loss: -1.3994140625>>> prediction.wait()>>> prediction.status
'succeeded'>>> prediction.output
<replicate.helpers.FileOutput object at 0x107179b50>>>> with open("output.png", "wb") as file:file.write(prediction.output.read())
5、后台运行模型并获取Webhook
您可以运行模型并在完成时获取 webhook,而不是等待它完成:
model = replicate.models.get("ai-forever/kandinsky-2.2")
version = model.versions.get("ea1addaab376f4dc227f5368bbd8eff901820fd1cc14ed8cad63b29249e9d463")
prediction = replicate.predictions.create(version=version, input={"prompt":"Watercolor painting of an underwater submarine"}, webhook="https://example.com/your-webhook", webhook_events_filter=["completed"]
)
有关接收 webhook 的详细信息,请参阅 replicate.com/docs/webhooks。
6、组合模型管道
您可以运行一个模型并将其输出作为另一个模型的输入:
laionide = replicate.models.get("afiaka87/laionide-v4").versions.get("b21cbe271e65c1718f2999b038c18b45e21e4fba961181fbfae9342fc53b9e05")
swinir = replicate.models.get("jingyunliang/swinir").versions.get("660d922d33153019e8c263a3bba265de882e7f4f70396546b6c9c8f9d47a021a")
image = laionide.predict(prompt="avocado armchair")
upscaled_image = swinir.predict(image=image)
7、获取运行中模型的输出
在模型运行时获取其输出:
iterator = replicate.run("pixray/text2image:5c347a4bfa1d4523a58ae614c2194e15f2ae682b57e3797a5bb468920aa70ebf", input={"prompts": "san francisco sunset"}
)for index, image in enumerate(iterator):with open(f"file_{index}.png", "wb") as file:file.write(image.read())
8、取消预测
您可以取消正在运行的预测:
>>> model = replicate.models.get("kvfrans/clipdraw")
>>> version = model.versions.get("5797a99edc939ea0e9242d5e8c9cb3bc7d125b1eac21bda852e5cb79ede2cd9b")
>>> prediction = replicate.predictions.create(version=version, input={"prompt":"Watercolor painting of an underwater submarine"})>>> prediction.status
'starting'>>> prediction.cancel()>>> prediction.reload()
>>> prediction.status
'canceled'
9、列出预测
您可以列出所有运行过的预测:
replicate.predictions.list()
# [<Prediction: 8b0ba5ab4d85>, <Prediction: 494900564e8c>]
预测列表是分页的。您可以通过将 next
属性作为参数传递给 list
方法来获取下一页预测:
page1 = replicate.predictions.list()if page1.next:page2 = replicate.predictions.list(page1.next)
10、加载输出文件
输出文件作为 FileOutput
对象返回:
import replicate
from PIL import Image # pip install pillowoutput = replicate.run("stability-ai/stable-diffusion:27b93a2413e7f36cd83da926f3656280b2931564ff050bf9575f1fdf9bcd7478", input={"prompt": "wavy colorful abstract patterns, oceans"})# 具有返回二进制数据的.read()方法
with open("my_output.png", "wb") as file:file.write(output[0].read())# 也实现了迭代器协议以流式传输数据
background = Image.open(output[0])
FileOutput 对象
FileOutput
是从 replicate.run()
方法返回的类文件对象,使处理输出文件的模型更容易使用。它实现了 Iterator
和 AsyncIterator
用于分块读取文件数据,以及 read()
和 aread()
方法将整个文件读入内存。
[!NOTE]
值得注意的是,目前read()
和aread()
不接受size
参数来读取最多size
字节。
最后,底层数据源的 URL 可通过 url
属性获得,但我们建议您将对象用作迭代器或使用其 read()
或 aread()
方法,因为 url
属性在未来可能不总是返回 HTTP URL。
print(output.url) #=> "data:image/png;base64,xyz123..." or "https://delivery.replicate.com/..."
要直接消费文件:
with open('output.bin', 'wb') as file:file.write(output.read())
对于非常大的文件,可以流式传输:
with open(file_path, 'wb') as file:for chunk in output:file.write(chunk)
每种方法都有对应的 asyncio
API:
async with aiofiles.open(filename, 'w') as file:await file.write(await output.aread())async with aiofiles.open(filename, 'w') as file:await for chunk in output:await file.write(chunk)
对于来自常见框架的流式响应,都支持接受 Iterator
类型:
Django
@condition(etag_func=None)
def stream_response(request):output = replicate.run("black-forest-labs/flux-schnell", input={...}, use_file_output =True)return HttpResponse(output, content_type='image/webp')
FastAPI
@app.get("/")
async def main():output = replicate.run("black-forest-labs/flux-schnell", input={...}, use_file_output =True)return StreamingResponse(output)
Flask
@app.route('/stream')
def streamed_response():output = replicate.run("black-forest-labs/flux-schnell", input={...}, use_file_output =True)return app.response_class(stream_with_context(output))
您可以通过向 replicate.run()
方法传递 use_file_output=False
来禁用 FileOutput
:
const replicate = replicate.run("acmecorp/acme-model", use_file_output=False);
11、列出模型
您可以列出您创建的模型:
replicate.models.list()
模型列表是分页的。您可以通过将 next
属性作为参数传递给 list
方法来获取下一页模型,或者使用 paginate
方法自动获取页面。
# 使用 `replicate.paginate` 自动分页(推荐)
models = []
for page in replicate.paginate(replicate.models.list):models.extend(page.results)if len(models) > 100:break# 使用 `next` 游标手动分页
page = replicate.models.list()
while page:models.extend(page.results)if len(models) > 100:breakpage = replicate.models.list(page.next) if page.next else None
您还可以在 Replicate 上找到精选模型集合:
>>> collections = [collection for page in replicate.paginate(replicate.collections.list) for collection in page]
>>> collections[0].slug
"vision-models"
>>> collections[0].description
"Multimodal large language models with vision capabilities like object detection and optical character recognition (OCR)">>> replicate.collections.get("text-to-image").models
[<Model: stability-ai/sdxl>, ...]
12、创建模型
您可以为用户或组织创建具有给定名称、可见性和硬件 SKU 的模型:
import replicatemodel = replicate.models.create(owner="your-username", name="my-model", visibility="public", hardware="gpu-a40-large"
)
以下是列出 Replicate 上可用于运行模型的所有可用硬件的方法:
>>> [hw.sku for hw in replicate.hardware.list()]
['cpu', 'gpu-t4', 'gpu-a40-small', 'gpu-a40-large']
13、微调模型
使用训练API微调模型,使其在特定任务上表现更好。要查看当前支持微调的语言模型,请查看 Replicate 的可训练语言模型集合。
如果您想微调图像模型,请查看 Replicate 的图像模型微调指南。
以下是在 Replicate 上微调模型的方法:
training = replicate.trainings.create(model="stability-ai/sdxl", version="39ed52f2a78e934b3ba6e2a89f5b1c712de7dfea535525255b1aa35c5565e08b", input={"input_images": "https://my-domain/training-images.zip", "token_string": "TOK", "caption_prefix": "a photo of TOK", "max_train_steps": 1000, "use_face_detection_instead": False}, # 您需要在 Replicate 上创建一个模型作为训练版本的接收方destination="your-username/model-name"
)
14、自定义客户端行为
replicate
包导出一个默认的共享客户端。此客户端使用 REPLICATE_API_TOKEN
环境变量设置的 API 令牌初始化。
您可以创建自己的客户端实例以传递不同的 API 令牌值,向请求添加自定义标头,或控制底层 HTTPX 客户端的行为:
import os
from replicate.client import Clientreplicate = Client(api_token=os.environ["SOME_OTHER_REPLICATE_API_TOKEN"]headers={"User-Agent": "my-app/1.0"}
)
[!WARNING]
切勿将 API 令牌等认证凭证硬编码到代码中。
相反,在运行程序时将它们作为环境变量传递。
五、开发
参见 CONTRIBUTING.md
伊织 xAI 2024-04-19(六)
相关文章:
Replicate Python client
本文翻译整理自:https://github.com/replicate/replicate-python 文章目录 一、关于 Replicate Python 客户端相关链接资源关键功能特性 二、1.0.0 版本的重大变更三、安装与配置1、系统要求2、安装3、认证配置 四、核心功能1、运行模型2、异步IO支持3、流式输出模型…...
LLM做逻辑推理题 - 如何找出不标准的球?
题目: 有80个外观一致的小球,其中一个和其它的重量不同,(不知道更轻还是更重)。现在给你一个天平,允许你称四次,把重量不同的球找出来,怎么称? 1. 答案 第1次称量:天平…...
[密码学基础]国密算法深度解析:中国密码标准的自主化之路
国密算法深度解析:中国密码标准的自主化之路 国密算法(SM系列算法)是中国自主研发的密码技术标准体系,旨在打破国际密码技术垄断,保障国家信息安全。本文将从技术原理、应用场景和生态发展三个维度,全面解…...
【计算机视觉】三维视觉项目 - Colmap二维图像重建三维场景
COLMAP 3D重建 项目概述项目功能项目运行方式1. 环境准备2. 编译 COLMAP3. 数据准备4. 运行 COLMAP 常见问题及解决方法1. **编译问题**2. **运行问题**3. **数据问题** 项目实战建议项目参考文献 项目概述 COLMAP 是一个开源的三维重建软件,专注于 Structure-from…...
基于Fabric.js的选座布局系统开发笔记
项目概述 最近开发了一个简单的选座布局系统,主要用于会议、活动或餐厅等场景的座位和桌子布局设计。系统基于HTML5 Canvas和Fabric.js库实现,支持添加座位、桌子,并能保存布局数据。 技术栈 • HTML5 Canvas:作为绘图的基础 •…...
PHP怎样连接MySQL数据库?
方法一:使用 mysqli 扩展 mysqli 是 MySQL 的改进版扩展,提供了面向对象和过程化的接口。 面向对象风格 <?php$servername "localhost"; $username "your_username"; $password "your_password"; $dbname &quo…...
将飞帆制作的网页作为 Vue 2 组件引入到自己网页中使用
飞帆平台有一个功能:不仅所有的网页都是通过控件搭建而成,而且生成的网页又是一个大控件,可以导入到你自己的网页使用。 这篇文章,我们要讲的就是如何将飞帆生成的网页作为控件(组件)导入到自己的网页中。…...
Python制作简易PDF查看工具PDFViewerV1.0显示优化
原文说明 为不破坏原文结构,因此功能优化不在原文中维护了。关于这款工具原文请通过下面链接访问。Python制作简易PDF查看工具PDFViewerV1.0 这款小工具基本功能已经可以作为一款文档浏览器使用,但还有一些美中不足的地方,本文将介绍对文本查找功能的优化调整。 优化效果 …...
YOLOv11改进有效涨点专栏:从理论到实战的深度优化指南
## YOLOv11的进化之路 在目标检测领域,YOLO系列算法始终保持着革命性的创新步伐。YOLOv11作为该系列的最新演进版本,在保持实时检测优势的同时,通过架构层面的深度优化实现了精度与速度的平衡。本文将从**七大核心模块**出发,系统性地解析针对YOLOv11的有效改进方案,涵盖从…...
【EDA软件】【设计约束和分析操作方法】
1. 设计约束 设计约束主要分为物理约束和时序约束。 物理约束主要包括I/O接口约束(如引脚分配、电平标准设定等物理属性的约束)、布局约束、布线约束以及配置约束。 时序约束是FPGA内部的各种逻辑或走线的延时,反应系统的频率和速度的约束…...
JVM基础认知:JVM到底是什么?为什么它如此重要?
随着 Java 语言在企业级应用、互联网服务、嵌入式系统等领域的广泛采用,JVM(Java Virtual Machine,Java虚拟机)成为了支撑整个生态的核心基础。初学者往往会把注意力集中在 Java 代码本身,却忽视了背后那台“看不见的机…...
javassist
使用javassist获取参数名 1,添加依赖 需要在pom.xml文件中添加下面的依赖: <dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.28.0-GA</version> </depende…...
【C++算法】66.栈_比较含退格的字符串
文章目录 题目链接:题目描述:解法C 算法代码: 题目链接: 844. 比较含退格的字符串 题目描述: 解法 用字符串来模拟栈。 C 算法代码: class Solution { public:bool backspaceCompare(string s, string t…...
游戏引擎学习第235天:在 Windows 上初始化 OpenGL
奇怪有问题 之前没注意到 这个问题是Count 0 GlobalConstants_Renderer_UsedDebugCamer 打开的话会有Bug Count是零的话就不让排序了 game.h: 查阅 TODO 列表 大家好,欢迎来到 game Hero,这是一档我们在直播中一起编写完整游戏的节目。不幸的是&a…...
FPGA系列之DDS信号发生器设计(DE2-115开发板)
一、IP核 IP(Intellectual Property)原指知识产权、著作权等,在IC设计领域通常被理解为实现某种功能的设计。IP模块则是完成某种比较复杂算法或功能(如FIR滤波器、FFT、SDRAM控制器、PCIe接口、CPU核等)并且参数可修改的电路模块,…...
修改Theme SHELL美化panel
安装 使用 使用Tweaks进行设置 需要创建.themes文件夹,在当前目录下 mkdir ~/.themes从官网下载文件 https://www.gnome-look.org/p/1013030 将打包压缩文件移动到~/themes,并解压 tar -xvf 01-Flat-Remix-Light-20250413.tar.xz然后使用 按 Alt F2…...
Sentinel源码—5.FlowSlot借鉴Guava的限流算法二
大纲 1.Guava提供的RateLimiter限流使用示例 2.Guava提供的RateLimiter简介与设计 3.继承RateLimiter的SmoothBursty源码 4.继承RateLimiter的SmoothWarmingUp源码 3.继承RateLimiter的SmoothBursty源码 (1)SmoothBursty的初始化流程 (2)SmoothBursty的初始化完成后的变量…...
自由学习记录(56)
从贴图空间(texture space)将值还原到切线空间(tangent space)向量 tangentNormal.xy (packedNormal.xy * 2 - 1) * _BumpScale; 背后的知识点:法线贴图中的 RGB 是在 0~1 范围内编码的向量 所以贴图法线是怎么“压…...
计算机网络八股——HTTP协议与HTTPS协议
前言: 到时候我想要写一篇文章就是:在浏览器中输入URL并按下回车会发生什么? 然后将几篇文章全部串联到一起,现在几天的任务就是将这里的每个小部分进行一个详细的介绍 HTTP1.1简述与特性 Web 上的通信都是建⽴在 HTTP 协议上的…...
JAVAEE(网络原理—UDP报头结构)
我们本篇文章要讲的是UDP的报头结构以及注意事项。 下面呢,我先说一下UDP是什么? 1.UDP是什么? UDP是一种网络协议。网络协议是计算机网络中,为了使不同设备之间能够准确、高效地进行数据交换和通信,而预先制定的一…...
Redis-分布式锁
Redis-分布式锁 文章目录 Redis-分布式锁1.基本原理和不同方式实现方式对比2.Redis分布式锁的基本实现思路3.分布式锁误删问题一4.分布式锁误删问题二5.Redission1.功能介绍2.快速入门3.可重入锁原理4.锁重试和WatchDog机制1.锁重试2. WatchDog 机制(锁自动续期&…...
如何优雅地为 Axios 配置失败重试与最大尝试次数
在 Vue 3 中,除了使用自定义的 useRequest 钩子函数外,还可以通过 axios 的拦截器 或 axios-retry 插件实现接口请求失败后的重试逻辑。以下是两种具体方案的实现方式: 方案一:使用 axios 拦截器实现重试 实现步骤: 通…...
Windows使用SonarQube时启动脚本自动关闭
一、解决的问题 Windows使用SonarQube时启动脚本自动关闭,并发生报错: ERROR: Elasticsearch did not exit normally - check the logs at E:\Inori_Code\Year3\SE\sonarqube-25.2.0.102705\sonarqube-25.2.0.102705\logs\sonarqube.log ERROR: Elastic…...
MYSQL初阶(暂为自用草稿)
目录 基本操作 database操作 table操作 数据类型 INT类型 bit类型 FLOAT类型 CHAR类型 DATE类型 SEL类型 表的约束 列约束 NULL DEFAULT PRIMARY KEY UNIQUE KEY 表约束 PRIMARY KEY FOREIGN KEY 其他补充 AUTO_INCREMENT COMMENT ZEROFILL 表的CRUD …...
交换排序——快速排序
交换排序的基本思路:把序列中的两个元素进行比较,根据需求对两个元素进行交换。特点是较大的元素向序列的尾部移动,较小的元素向序列的前部移动。 hoare法 在序列中任取一个元素作为基准值,一趟排序完成之后,以基准值为…...
资源-又在网上淘到金了
前言: 本期再分享网上冲浪发现的特效/动画/视频资源网站。 一、基本介绍: mantissa.xyz,about作者介绍为:Midge “Mantissa” Sinnaeve (米奇辛纳夫)是一位屡获殊荣的艺术家和导演,提供动画、…...
CSS中的`transform-style`属性:3D变换的秘密武器
在CSS中,当我们尝试创建复杂的3D场景时,transform-style属性变得尤为重要。它决定了子元素是在3D空间中呈现还是被展平到2D平面中。本文将深入探讨transform-style的用法,并通过具体的代码示例来展示如何利用这个属性来增强你的网页设计。 什…...
Step文件无法编辑怎么办?
Step文件无法编辑怎么办? 这里介绍两种方法, 1、 直接导入 准备step文件,solidworks导入后是这样,不能在上面直接编辑 图 1 点击右键,选择解除特征(不同版本的可能不太一样,这里是solidworks2…...
从 LabelImg 到 Label Studio!AI 数据标注神器升级,Web 版真香
视频讲解: 从 LabelImg 到 Label Studio!AI 数据标注神器升级,Web 版真香 Label Studio 支持图像、文本、音频、视频、时间序列等多类型数据标注,覆盖计算机视觉(目标检测、语义分割)、自然语言处理&#x…...
纯FPGA实现驱动AD9361配置的思路和实现之一 概述
我们在做ZYNQ系统开发时候做的IP基本都是AXI_LITE_SLAVE,是SLAVE,从设备。就是提供了若干寄存器接口供MASTER进行读写。SLAVE里面的逻辑通过读写动作或者读写的数据进行响应的动作。这种方式的好处是硬件层面可以访问寄存器,软件层面是可以实…...
Nacos配置中心服务端源码解析
文章目录 概述一、配置持久化到数据库二、发布事件2.1、事件发布者端2.1.1、DefaultPublisher#publish2.1.2、DefaultPublisher#run2.1.3、DefaultPublisher#receiveEvent 2.2、事件订阅者端2.2.1、Subscriber#onEvent2.2.2、ConfigCacheService#dump 总结:Nacos 配…...
SAP系统工艺路线的分配物料出现旧版包材
问题:工艺路线的物料错了 这是3月份技术部发现的问题,10000209这个成品有两个版本的BOM, 在创建新版的工艺路线里,发现分配的物料仍然是旧版的物料. 原因排查: 1 BOM中物料错误? 2 选错了生产版本,选了版本1? 3 生产版本设置中的可选BOM错误? 解决:把可选的BOM…...
JVM虚拟机--JVM的组成
(一)JVM的组成 一、JVM介绍 (1)JVM的作用 我们知道,Java代码要想在计算机中正常运行,就需要经过编译为class二进制字节码文件,而JVM就提供了class二进制字节码的运行环境。 一次编写,到处运行 因为JVM是…...
科学研究:怎么做
科研(科学研究) 是指通过系统化的方法,探索自然、社会或人文领域的未知问题,以发现新知识、验证理论或解决实际问题的活动。它的核心是基于证据的探索与创新,旨在推动人类认知和技术的进步。 科研的核心要…...
PyTorch数据操作基础教程:从张量创建到高级运算
本文通过示例代码全面讲解PyTorch中张量的基本操作,包含创建、运算、广播机制、索引切片等核心功能,并提供完整的代码和输出结果。 1. 张量创建与基本属性 import torch# 创建连续数值张量 x torch.arange(12, dtypetorch.float32) print("原始张…...
微服务治理与可观测性
服务注册与发现 核心功能 服务实例动态变化:实例可能因扩缩容、故障或迁移导致IP变动。服务依赖解耦:调用方无需硬编码服务地址,降低耦合度。负载均衡:自动选择健康实例,提升系统可用性。 核心组件 服务注册中心&am…...
如何对docker镜像存在的gosu安全漏洞进行修复——筑梦之路
这里以mysql的官方镜像为例进行说明,主要流程为: 1. 分析镜像存在的安全漏洞具体是什么 2. 根据分析结果有针对性地进行修复处理 3. 基于当前镜像进行修复安全漏洞并复核验证 # 镜像地址mysql:8.0.42 安全漏洞现状分析 dockerhub网站上获取该镜像的…...
OpenCV 04.19 练习
1. 创建一个 PyQt 应用程序,该应用程序能够: 1.使用 OpenCV 加载一张图像。 2.在 PyQt 的窗口中显示这张图像。 3.提供四个按钮(QPushButton): - 一个用于将图像转换为灰度图 - 一个用于将图像恢复为原始彩色图 - 一个…...
uv:重新定义Python开发效率的下一代工具链
在Python生态系统中,包管理和项目工具链的复杂性一直是开发者面临的一大挑战。从依赖管理、虚拟环境创建到多版本Python切换,传统的工具链(如pip、virtualenv、poetry等)虽然功能强大,但操作繁琐、性能不足的问题长期存在。而uv的出现,以颠覆性的速度和功能集成,为Pytho…...
【Easylive】Gateway模块 bootstrap.yml 解析
【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版 Gateway模块 bootstrap.yml 常规解析 该配置文件定义了 Spring Cloud Gateway 的核心配置,包括 环境配置、服务注册、动态路由规则 等。以下是逐项解析: 1. 基础配…...
Warcraft Logs [Classic] [WCL] Usage Wizard <HTOC>
HTOC(十字军的试炼)副本中各个BOSS的ID如下: 629 - 诺森德野兽 633 - 加拉克苏斯大王 637 - 派系冠军 641 - 瓦格里双子 645 - 阿努巴拉克 encounterID!637 and encounterID!641 encounterID NOT IN (637,641) 伤害 …...
多模态大语言模型arxiv论文略读(二十八)
MM-SAP: A Comprehensive Benchmark for Assessing Self-Awareness of Multimodal Large Language Models in Perception ➡️ 论文标题:MM-SAP: A Comprehensive Benchmark for Assessing Self-Awareness of Multimodal Large Language Models in Perception ➡️…...
JavaScript数据类型简介
在JavaScript中,理解不同的数据类型是掌握这门语言的基础。数据类型决定了变量可以存储什么样的值以及这些值能够执行的操作。JavaScript支持多种数据类型,每种都有其特定的用途和特点。本文将详细介绍JavaScript中的主要数据类型,并提供一些…...
CasualLanguage Model和Seq2Seq模型的区别
**问题1:**Causal Language Modeling 和 Conditional Generation 、Sequence Classification 的区别是什么? 因果语言模型(Causal Language Model): 预测给定文本序列中的下一个字符,一般用于文本生成、补全句子等,模型…...
在Qt和OSG中动态改变部分3D模型数据
要在Qt和OSG环境中导入3D模型并只对部分数据进行动态改变,你可以采用以下方法: 基本实现步骤 加载模型:使用OSG的读取器加载3D模型文件 访问特定部分:识别并获取模型中需要修改的部分 动态修改:在Qt界面或逻辑中设置修改这些部分的机制 更新显示:确保修改后的模型能够实…...
命令update-alternatives
❯ which pip /home/ying/anaconda3/bin/pipying192 ~ [2]> which pip /usr/bin/pip使用update-alternatives对他们进行管理和切换 快捷方式 和 实际路径不可以相同 所以我这边选择了/usr/local/bin目录作为介质存储快捷方式,另外该快捷方式会自己创建我们只需选…...
10.thinkphp的响应
响应输出 响应操作 1. 响应输出,有好几种:包括return、json()和view()等等; 2. 默认输出方式是以html格式输出,如果你发起json请求,则输出json; 3. 而背后是response对象,可以用response()输…...
【技术派后端篇】技术派中的白名单机制:基于Redis的Set实现
在技术派社区中,为了保证文章的质量和社区的良性发展,所有发布的文章都需要经过审核。然而,并非所有作者的文章都需要审核,我们通过白名单机制来优化这一流程。本文将详细介绍技术派中白名单的实现方式,以及如何利用Re…...
Keil A51汇编伪指令
以下是 Keil A51 汇编器支持的常用伪指令 及其详细说明,涵盖代码结构、数据定义、条件编译等关键功能,结合实际应用场景进行分类和示例: 一、程序结构与地址控制 伪指令功能语法示例说明ORG设置代码/数据起始地址ORG 0000H后续代码从指定地址…...
Windows上安装FFmpeg的详细指南
1.下载FFmpeg 访问FFmpeg官方下载页面:https://ffmpeg.org/download.html 点击"Windows builds from gyan.dev"或"Windows builds by BtbN" gyan.dev版本:https://www.gyan.dev/ffmpeg/builds/ BtbN版本:https://githu…...