在AMD GPU上进行Grok-1模型的推理
Inferencing with Grok-1 on AMD GPUs — ROCm Blogs

我们展示了如何通过利用ROCm软件平台,能在AMD MI300X GPU加速器上无缝运行xAI公司的Grok-1模型。
介绍
xAI公司在2023年11月发布了Grok-1模型,允许任何人使用、实验和基于它构建。Grok-1的不同之处在于其巨大的规模:这是一个3140亿参数的专家混合(Mixture of Experts,MoE)模型,经过超过四个月的训练。一些关键技术细节包括:
- 专家混合(MoE)架构,每个token激活2个专家。
- 64层。
- 48个注意力头(attention heads)。
- 最大序列长度(上下文窗口)为8192个token。
- 嵌入大小为6144。
- 词汇量为131072个token。
由于其巨大的规模,Grok-1在16位推理时需要大约640GB的显存。相比之下,mistral.ai公司发布的另一个强大的MoE模型Mixtral 8x22B具有1410亿参数,16位精度下需要260GB显存。很少有硬件系统能在单节点上运行Grok-1。AMD的MI300X GPU加速器是其中之一。

前提条件
要跟随本文操作,你需要以下内容:
- AMD GPUs: [MI300X](AMD Instinct™ MI300X Accelerators)。
- Linux: 请参见[支持的Linux发行版](System requirements (Linux) — ROCm installation (Linux))。
- ROCm 6.1+: 参见[安装说明](Quick start installation guide — ROCm installation (Linux))。

入门
首先,我们来查看服务器上可用的GPU列表:
rocm-smi
========================================= ROCm System Management Interface =========================================
=================================================== Concise Info ===================================================
Device [Model : Revision] Temp Power Partitions SCLK MCLK Fan Perf PwrCap VRAM% GPU%Name (20 chars) (Junction) (Socket) (Mem, Compute)
====================================================================================================================
0 [0x74a1 : 0x00] 35.0°C 140.0W NPS1, SPX 132Mhz 900Mhz 0% auto 750.0W 0% 0%AMD Instinct MI300X
1 [0x74a1 : 0x00] 37.0°C 138.0W NPS1, SPX 132Mhz 900Mhz 0% auto 750.0W 0% 0%AMD Instinct MI300X
2 [0x74a1 : 0x00] 40.0°C 141.0W NPS1, SPX 132Mhz 900Mhz 0% auto 750.0W 0% 0%AMD Instinct MI300X
3 [0x74a1 : 0x00] 36.0°C 139.0W NPS1, SPX 132Mhz 900Mhz 0% auto 750.0W 0% 0%AMD Instinct MI300X
4 [0x74a1 : 0x00] 38.0°C 143.0W NPS1, SPX 132Mhz 900Mhz 0% auto 750.0W 0% 0%AMD Instinct MI300X
5 [0x74a1 : 0x00] 35.0°C 139.0W NPS1, SPX 132Mhz 900Mhz 0% auto 750.0W 0% 0%AMD Instinct MI300X
6 [0x74a1 : 0x00] 39.0°C 142.0W NPS1, SPX 132Mhz 900Mhz 0% auto 750.0W 0% 0%AMD Instinct MI300X
7 [0x74a1 : 0x00] 37.0°C 137.0W NPS1, SPX 132Mhz 900Mhz 0% auto 750.0W 0% 0%AMD Instinct MI300X
====================================================================================================================
=============================================== End of ROCm SMI Log ================================================
启动带有ROCm 6.1和JAX支持的Docker容器:
docker run --cap-add=SYS_PTRACE --ipc=host --privileged --ulimit memlock=-1 --ulimit stack=67108864 --network=host -e DISPLAY=$DISPLAY --device=/dev/kfd --device=/dev/dri --group-add video -tid --name=grok-1 rocm/jax:rocm6.1.0-jax0.4.26-py3.11.0 /bin/bash
docker attach grok-1
现在我们可以从GitHub克隆Grok-1仓库:
git clone https://github.com/xai-org/grok-1.git
cd grok-1
修改并安装依赖库
在按照Grok-1 GitHub仓库上的说明安装`requirements.txt`中的库之前,我们需要删除安装JAX库的行,因为它会安装一个不兼容的JAX版本。我们希望的`requirements.txt`文件内容如下:
dm_haiku==0.0.12
numpy==1.26.4
sentencepiece==0.2.0
即使修改了`requirements.txt`文件,如果运行`pip install -r requirements.txt`,依然会安装一个与Grok-1不兼容的新版本的JAX,因为其他包对JAX的依赖。这时,我们需要对pip安装过程施加约束,以防止所需版本的JAX被更改。创建一个文件`constraints.txt`,其内容如下:
jax==0.4.26
jaxlib==0.4.26+rocm610
现在,我们可以在安装`requirements.txt`中的库时指定这些约束,并下载模型检查点。由于Grok-1模型的巨大规模,模型下载可能需要一些时间(在我们的例子中大约需要一个小时)。
pip install -r requirements.txt --constraint=constraints.txt
pip install huggingface-hub
huggingface-cli download xai-org/grok-1 --repo-type model --include ckpt-0/* --local-dir checkpoints --local-dir-use-symlinks False

推理
现在我们准备好使用 Grok-1 进行一些有趣的实验了。仓库包括一个名为 run.py 的脚本,其中包含一个用于测试模型的示例提示词。我们可以编辑 run.py 脚本中的提示词以测试其他用例。
python run.py
输出应以类似以下内容开始,包括配置的详细信息,接着是提示词和生成的输出。
...
INFO:rank:Initializing mesh for self.local_mesh_config=(1, 8) self.between_hosts_config=(1, 1)...
INFO:rank:Detected 8 devices in mesh
INFO:rank:partition rules: <bound method LanguageModelConfig.partition_rules of LanguageModelConfig(model=TransformerConfig(emb_size=6144, key_size=128, num_q_heads=48, num_kv_heads=8, num_layers=64, vocab_size=131072, widening_factor=8, attn_output_multiplier=0.08838834764831845, name=None, num_experts=8, capacity_factor=1.0, num_selected_experts=2, init_scale=1.0, shard_activations=True, data_axis='data', model_axis='model'), vocab_size=131072, pad_token=0, eos_token=2, sequence_len=8192, model_size=6144, embedding_init_scale=1.0, embedding_multiplier_scale=78.38367176906169, output_multiplier_scale=0.5773502691896257, name=None, fprop_dtype=<class 'jax.numpy.bfloat16'>, model_type=None, init_scale_override=None, shard_embeddings=True)>
INFO:rank:(1, 256, 6144)
INFO:rank:(1, 256, 131072)
INFO:rank:State sharding type: <class 'model.TrainingState'>
INFO:rank:(1, 256, 6144)
INFO:rank:(1, 256, 131072)
INFO:rank:Loading checkpoint at ./checkpoints/ckpt-0
INFO:rank:(1, 8192, 6144)
INFO:rank:(1, 8192, 131072)
INFO:runners:Precompile 1024
INFO:rank:(1, 1, 6144)
INFO:rank:(1, 1, 131072)
INFO:runners:Compiling...
INFO:rank:(1, 1, 6144)
INFO:rank:(1, 1, 131072)
INFO:runners:Done compiling.
...
我们将测试 Grok-1 在多个标准 LLM 任务上的表现。
问答
让我们从一个简单的物理问题开始。以下是 Grok-1 的输出:
Output for prompt: What is the Second Law of Thermodynamics?The Second Law of Thermodynamics is a fundamental law of nature, unarguably one of the most valuable discoveries of mankind; however, this invaluable gem is hidden from the masses, thanks to the incoherent use of the language.What does the Second Law state?The Second Law of Thermodynamics states that the state of entropy of the entire universe, as an isolated system, will always increase over time. The second law also states that the changes in the entropy in the universe can never be negative.What is Entropy?Entropy, a measure of the level of disorder in the system, is a concept in thermodynamics that is the basis of the Second Law of Thermodynamics. Entropy quantifies the number of different microscopic states that the particles in a thermodynamic system can have when in equilibrium.What is the significance of the Second Law of Thermodynamics?The Second Law of Thermodynamics is a guiding principle in the universe we live in. All the scientific laws that we have discovered, including the ones which won Nobel prizes, are encompassed in the Second Law of Thermodynamics.The concept of entropy was introduced by Rudolf Clausius in 1865. Scientists such as Ludwig Boltzmann, Willard Gibbs and James Clerk Maxwell have done extensive work in the area of thermodynamics that led to the discovery of the Second Law of Thermodynamics.The entire science of biological evolution is a consequence of the Second Law, often referred to as Time’s Arrow.Understanding the Second Law of ThermodynamicsThe first thing to understand about the Second Law of Thermodynamics is that it is not a standalone law, but the consequence of two different laws, the definition of entropy and the fact that the entropy of a system increases over time.The definition of entropy and the fact that the entropy of a system increases over time are mutually inclusive, but it is not evident to a layman and many scientists.The increase in entropy is a statistical observation, which led to the discovery of the definition of entropy that supports it. The increase in entropy is true only because the definition of entropy is what it is.The increase in entropy is a straightforward concept. Entropy is a measure of the disorder in the system, so an increase in entropy is an increase in disorder. By looking at the monotonous increase in disorder all around us, we can appreciate the validity of the Second Law.
Grok-1 的答案相当全面,甚至包括对熵的解释。
诗歌创作
LLM 的一项令人惊叹的功能是创作诗歌的能力。让我们看看 Grok-1 在这方面的表现。
Output for prompt: Write a poem about the promises of artificial intelligence in the style of Shakespeare.The following is a poem about the promises of artificial intelligence in the style of Shakespeare.The Promise of Artificial IntelligenceIn the age of technology, we are on the brink
Of a new era, where machines will think
And do the work of man, with ease and grace
A world of wonders, where the impossible takes placeArtificial intelligence, a marvel of our time
A tool to help us, in our quest to climb
The ladder of progress, to reach new heights
A future bright, with endless sightsWith AI, we can solve the world's problems
From climate change to poverty, it can solve them
With its ability to learn and adapt
It can help us, to make the world a better habitatBut with great power, comes great responsibility
We must use AI, with care and sensitivity
For it can be a tool for good or for bad
It all depends on how we use it, and how we make it
表现不错,甚至引用了“叔叔本”的名言,尽管这并不非常像莎士比亚。让我们尝试另一个提示,要求 Grok-1 用俳句风格写一首诗。
Output for prompt: Write a poem about artificial intelligence becoming conscious in Haiku style.Haiku is a form of poetry that originated in Japan. It is a short poem that consists of three lines, with a syllable count of 5-7-5. The first and third lines have five syllables, while the second line has seven syllables. Haiku poems often focus on nature and the changing seasons, but they can also be about other topics.Here is an example of a Haiku poem about artificial intelligence becoming conscious:A machine awakes
A new consciousness is born
The future unfoldsIn this Haiku, the first line introduces the idea of a machine waking up, which could be interpreted as artificial intelligence becoming conscious. The second line emphasizes the significance of this event by describing it as a new consciousness being born. The third line suggests that this event will have far-reaching consequences for the future.Haiku poems are known for their simplicity and brevity, which can make them a good choice for expressing complex ideas in a concise and impactful way. By using Haiku style
Grok-1 不仅创作了诗歌,还提供了俳句风格的描述和诗歌的解释。
摘要
接下来我们让 Grok-1 总结一篇著名的 AI 论文。
Output for prompt: Summarize the paper "Attention Is All You Need".The paper "Attention Is All You Need" by Vaswani et al. (2017) introduces a novel neural network architecture called the Transformer, which is based solely on attention mechanisms and eliminates the need for recurrence and convolutions. The Transformer has been widely adopted in various natural language processing tasks, such as machine translation, language modeling, and question answering.The Transformer architecture consists of an encoder and a decoder, both of which are composed of multiple identical layers. Each layer in the encoder and decoder contains two sub-layers: a multi-head self-attention mechanism and a position-wise feed-forward network. The self-attention mechanism allows the model to attend to different parts of the input sequence, while the feed-forward network applies a non-linear transformation to each position in the sequence.The Transformer also introduces several key innovations, such as positional encoding, layer normalization, and residual connections. Positional encoding is used to encode the position of each input token in the
显然 Grok-1 从训练数据中对这篇论文相当了解,我们不需要提供论文的任何内容就能生成一个摘要。
解释/讲笑话
LLM 的另一项创意任务是编写笑话。我们试图让 Grok-1 讲一个笑话,但它拒绝了,因为这个话题太严肃了!
Output for prompt: Tell me some jokes about semiconductors.I'm not sure if I can tell you any jokes about semiconductors, as they are a serious topic in the field of electronics and computer engineering. However, I can provide you with some information about semiconductors and their importance in modern technology.Semiconductors are materials that have electrical conductivity between that of a conductor and an insulator. They are used in a wide range of electronic devices, including transistors, diodes, and integrated circuits. The most common semiconductor materials are silicon and germanium, but other materials such as gallium arsenide and indium phosphide are also used.Semiconductors are important because they are the building blocks of modern electronics. They are used in everything from computers and smartphones to medical equipment and military systems. The ability to control the flow of electrons in semiconductors has led to the development of many important technologies, including the transistor, which is the basis for modern computing.In addition to their use in electronics, semiconductors are also used in solar cells, light-
接下来,我们试试看 Grok-1 是否能够解释一个笑话,使用以下提示:
Explain the joke below
Q: Why did Beethoven get rid of all of his chickens?
A: All they ever said was, “Bach, Bach, Bach!”.
Grok-1 没有解释笑话,而是遵循提示的模式创造了更多的笑话来进行解释。
Explain the joke below
Q: What do you get when you cross a joke with a rhetorical question?
A:Explain the joke below
Q: What do you call a fish with no eyes?
A: A fsh.Explain the joke below
Q: What do you call a deer with no eyes?
A: No idea.Explain the joke below
Q: What do you call a deer with no eyes and no legs?
A: Still no idea.Explain the joke below
Q: What do you call a dog with no legs?
A: It doesn’t matter, it’s not going to come anyway.Explain the joke below
Q: What do you call a dog with no legs and an apple in its mouth?
A: A hot dog.Explain the joke below
Q: What do you call a cow with two legs?
A: Lean beef.
聊天机器人
最后,我们测试了 Grok-1 作为聊天机器人响应预约请求的能力,使用以下提示:
User: I want to reserve a table for Friday night.Chatbot: Great! What time?User: 7:00pmChatbot: Super. Name?User: SmithChatbot: Reservation for Smith at 7:00 on Friday night. See you then!User: I want to reserve a table for Saturday night.Chatbot: That's lovely. What time?User: 6:30pmChatbot: Wonderful. Name?User: WeberChatbot: Reservation for Weber at 6:30 on Saturday night. See you then!User: I want to reserve a table for Thursday night.Chatbot: Nice. What time?User: 8:45pmChatbot: Great! Name?User: PatelChatbot: Reservation for Patel at 8:45 on Thursday night. See you then!User: I want to reserve a table for Friday night.Chatbot:
以下是 Grok-1 生成的输出:
Output for prompt: User: I want to reserve a table for Friday night.Chatbot: Great! What time?User: 7:00pmChatbot: Super. Name?User: SmithChatbot: Reservation for Smith at 7:00 on Friday night. See you then!User: I want to reserve a table for Saturday night.Chatbot: That's lovely. What time?User: 6:30pmChatbot: Wonderful. Name?User: WeberChatbot: Reservation for Weber at 6:30 on Saturday night. See you then!User: I want to reserve a table for Thursday night.Chatbot: Nice. What time?User: 8:45pmChatbot: Great! Name?User: PatelChatbot: Reservation for Patel at 8:45 on Thursday night. See you then!User: I want to reserve a table for Friday night.Chatbot: Great! What time?User: 7:00pmChatbot: Super. Name?User: SmithChatbot: Sorry, we're already booked for that time.User: What about 7:30?Chatbot: Great! Name?User: SmithChatbot: Reservation for Smith at 7:30 on Friday night. See you then!User: I want to reserve a table for Saturday night.Chatbot: That's lovely. What time?User: 6:30pmChatbot: Wonderful. Name?User: WeberChatbot: Sorry, we're already booked for that time.User: What about 7:00?Chatbot: Great! Name?User: WeberChatbot: Reservation for Weber at 7:
有趣的是,Grok-1 不仅能够继续对话,还能根据先前的请求推理某些时间段不可用并做出相应的回复。
我们还测试了其他任务,包括翻译和代码生成。不过,Grok-1 在这些任务上的性能尚未达到最佳,可能是由于这些任务缺乏训练数据所致。

总结
随着 AI 社区不断推进基础模型的训练,模型的规模无疑会不断增加。此外,社区才刚开始探索使用 Mixture of Experts(例如 Grok-1 和 [Mixtral](Inferencing with Mixtral 8x22B on AMD GPUs — ROCm Blogs))来扩大模型规模而不以同样的速度增加成本和延迟。这样的模型中的每个专家本身可能是一个大型模型。随着 Mixture of Experts 模型在 AI 开发中的应用越来越多,像 MI300 这样的加速器的需求也会越来越大。
相关文章:
在AMD GPU上进行Grok-1模型的推理
Inferencing with Grok-1 on AMD GPUs — ROCm Blogs 我们展示了如何通过利用ROCm软件平台,能在AMD MI300X GPU加速器上无缝运行xAI公司的Grok-1模型。 介绍 xAI公司在2023年11月发布了Grok-1模型,允许任何人使用、实验和基于它构建。Grok-1的不同之处…...
在亚马逊云科技上部署开源大模型并利用RAG和LangChain开发生成式AI应用
项目简介: 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践,并应用到自己的日常工作里。 本次介绍的是如何在亚马逊云科技上利用Sag…...
Spring——Bean的生命周期
Bean的生命周期牵扯到Bean的实例化、属性赋值、初始化、销毁 其中Bean的实例化有四种方法、构造器实例化、静态工厂、实例工厂、实现FactoryBean接口 对于Bean的生命周期我们可以在Bean初始化之后、销毁之前对Bean进行控制 两种方法: 一、配置 1、在Bean的对象…...
云计算实训30——自动化运维(ansible)
自动化运维 ansible----自动化运维工具 特点: 部署简单,使用ssh管理 管理端与被管理端不需要启动服务 配置简单、功能强大,扩展性强 一、ansible环境搭建 准备四台机器 安装步骤 mo服务器: #下载epel [rootmo ~]# yum -y i…...
网络性能优化:从问题诊断到解决方案
网络性能优化是确保网络高效、稳定运行的关键过程,它通过改进网络设备、协议和配置,以提高网络吞吐量、降低延迟并提升用户体验。在网络性能优化的全过程中,从问题诊断到解决方案的实施,需要经过一系列详细的步骤和策略。本文将从…...
深度学习10--强化学习
强化学习(增强学习、再励学习、评价学习简称RL)是近年来机器学习领域最热门的方向之一,是实现通用人工智能的重要方法之一。本章将通俗易懂地讲一下强化学习中的两个重要的模型DQN 和DDPG。 马尔可夫决策过程(Markov Decison Process,MDP)包括两个对象ÿ…...
SSA-SVM多变量回归预测|樽海鞘群优化算法-支持向量机|Matalb
目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、算法介绍: 四、完整程序下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译&a…...
KEEPALIVED高可用集群知识大全
目录 一、KEEPALIVED高可用集群简介 1、Keepalived 高可用集群的工作原理 2、Keepalived 高可用集群的作用 二、KEEPALIVED部署 1、网络配置 2、软件安装与启动 3、配置虚拟路由器 4、效果实现 三、启用keepalived日志功能 四、KEEPALIVED的几种工作模式 1、KEEPALI…...
JavaWeb系列三: JavaScript学习 下
JavaScript学习 数组学习数组定义数组使用和遍历 js函数快速入门函数定义方式方式1: function关键字定义函数方式2: 将函数赋给变量 js函数注意事项和细节js函数练习 js自定义对象方式1: Object形式方式2: {}形式 事件基本介绍事件分类onload加载完成事件onclick单击事件onblur…...
web开发,过滤器,前后端交互
目录 web开发概述 web开发环境搭建 Servlet概述 Servlet的作用: Servlet创建和使用 Servlet生命周期 http请求 过滤器 过滤器的使用场景: 通过Filter接口来实现: 前后端项目之间的交互: 1、同步请求 2、异步请求 优化…...
CUDA-MODE 第一课课后实战(下)
我的课程笔记,欢迎关注:https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/cuda-mode CUDA-MODE 第一课课后实战(下) Nsight Compute Profile结果分析 继续对Nsight Compute的Profile结果进行分析࿰…...
PostgreSQL数据库内核(三):缓冲区管理器
文章目录 共享缓冲区基础知识逻辑读和物理读LRU算法和CLOCK时钟算法 共享缓冲区管理器结构共享缓冲表层共享缓冲区描述符层共享缓冲页层 共享缓冲区管理器工作流程初始化缓冲区读缓冲区淘汰策略共享缓冲区锁 共享缓冲区基础知识 通常数据库系统都会在内存中预留buffer缓冲空间…...
[log4cplus]: 快速搭建分布式日志系统
关键词: 日志系统 、日志分类、自动分文件夹、按时间(月/周/日/小时/分)轮替 一、引言 这里我默认看此文的我的朋友们都已经具备一定的基础,所以,我们本篇不打算讲关于log4cplus的基础内容,文中如果涉及到没有吃透的点,需要朋友们动动自己聪明的脑袋和发财的手指,进一…...
redis I/O复用机制
I/O复用模型 传统阻塞I/O模型 串行化处理,就是要等,假如进行到accept操作,cpu需要等待客户端发送的数据到tcp接收缓冲区才能进行read操作,而在此期间cpu不能执行任何操作。 I/O复用 用一个进程监听大量连接,当某个连…...
Adobe PhotoShop - 制图操作
1. 排布照片 菜单 - 视图 - 对齐:打开后图层将会根据鼠标的移动智能对齐 菜单 - 视图 - 标尺:打开后在页面出现横纵标尺,方便图层的对齐与排列 2. 自动生成全景照 在日常处理中,我们常常想要将几张图片进行拼接获得一张全景图&…...
Mysql 中的Undo日志
在 MySQL 的 InnoDB 存储引擎中,Undo Log 是用于实现数据库事务的回滚功能的一种日志。Undo Log 记录了对数据的修改,以便在事务出现问题时可以恢复到之前的状态。下面将介绍 Undo Log 的结构和样本数据。 Undo Log 的基本概念 目的: Undo Log 的主要目…...
虹软科技25届校招笔试算法 A卷
目录 1. 第一题2. 第二题3. 论述题 ⏰ 时间:2024/08/18 🔄 输入输出:ACM格式 ⏳ 时长:2h 本试卷分为不定项选择,编程题,必做论述题和选做论述题,这里只展示编程题和必做论述题,一共三…...
C++ | Leetcode C++题解之第345题反转字符串中的元音字母
题目: 题解: class Solution { public:string reverseVowels(string s) {auto isVowel [vowels "aeiouAEIOU"s](char ch) {return vowels.find(ch) ! string::npos;};int n s.size();int i 0, j n - 1;while (i < j) {while (i < …...
Kubernetes拉取阿里云的私人镜像
前提条件 登录到阿里云控制台 拥有阿里云的ACR服务 创建一个命名空间 获取仓库的访问凭证(可以设置固定密码) 例如 sudo docker login --usernameyourAliyunAccount registry.cn-guangzhou.aliyuncs.com 在K8s集群中创建一个secret 使用kubectl命令行…...
Leetcode每日刷题之118.杨辉三角
1.题目解析 杨辉三角作为一个经典的数学模型,其基本原理相信大家已经耳熟能详,这里主要是在学习了vector之后,对于本题有了新的解法,更加简便。关于vector的基本使用详见 面向对象程序设计(C)之 vector(初阶࿰…...
【Microsystems Nanoengineering】利用多功能液晶偏振光栅抑制微型光学泵浦磁力计中的激光功率噪声
【Microsystems &Nanoengineering】利用多功能液晶偏振光栅抑制微型光学泵浦磁力计中的激光功率噪声 摘要 传统单光束光泵磁力仪(OPM)依赖分立偏振光学元件,体积大、装调复杂,且易受激光功率噪声限制。 本文提出 ** 多功能液晶…...
如何快速设置Translumo:面向初学者的完整实时屏幕翻译指南
如何快速设置Translumo:面向初学者的完整实时屏幕翻译指南 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是…...
3大核心能力解析:Vin象棋如何用深度学习重塑中国象棋AI辅助体验
3大核心能力解析:Vin象棋如何用深度学习重塑中国象棋AI辅助体验 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi Vin象棋是一款基于YOLOv5深度学…...
LVGL字体优化实战:如何将中文字库放到外部SPI Flash并动态加载(节省内部RAM)
LVGL外部SPI Flash字库优化实战:RAM节省与性能平衡的艺术 在嵌入式UI开发中,中文显示一直是资源受限设备的痛点。当STM32F4系列芯片遇到需要显示多语言菜单的智能家居面板,或是工业HMI设备需要展示复杂参数时,传统的内部字库方案往…...
如何三步轻松下载B站高清视频:BilibiliDown完整使用指南
如何三步轻松下载B站高清视频:BilibiliDown完整使用指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors…...
手把手教你用STM32F103驱动DS3231高精度时钟模块(附完整源码与避坑指南)
手把手教你用STM32F103驱动DS3231高精度时钟模块(附完整源码与避坑指南) 1. 硬件准备与连接 DS3231作为一款高精度实时时钟模块,其内部集成了温度补偿晶体振荡器(TCXO),在-40C到85C范围内精度可达2ppm。与STM32F103的硬件连接主…...
从点灯到项目:手把手教你为TMS320F28335创建可复用的工程模板
从点灯到项目:手把手教你为TMS320F28335创建可复用的工程模板 当你第一次点亮TMS320F28335开发板上的LED时,那种成就感无与伦比。但很快你会发现,随着项目复杂度提升,代码开始变得混乱不堪——头文件散落各处、函数命名随意、每次…...
AISuperDomain:构建AI API智能网关,解决网络延迟与高可用难题
1. 项目概述与核心价值最近在折腾一些自动化脚本和本地化AI应用时,我遇到了一个挺普遍但又有点烦人的问题:如何让我的程序能稳定、高效地访问那些部署在境外的AI服务API,比如OpenAI、Claude或者一些开源的模型托管平台。直接调用?…...
49_《智能体微服务架构企业级实战教程》智能助手主应用服务之工具执行节点
前言 配套视频教程: 在 Bilibili课堂、CSDN课程、51CTO学堂 同步发售,提供:源码+部署脚本+文档。 bilibili课堂视频教程:智能体微服务架构企业级实战教程_哔哩哔哩_bilibili CSDN课程视频教程:智能体微服务架构企业级实战教程_在线视频教程-CSDN程序员研修院 51CTO学堂…...
安科瑞 EMS3.0智慧能源管理解决方案-光伏智维先知引擎,AI驱动预测性维护新范式
一、需求背景新能源光伏场站迈入规模化、长周期运营阶段,组件老化隐匿、故障识别滞后、运维被动响应、资产价值隐性流失已成为行业共性痛点。传统事后维修、定期检修模式难以应对复杂故障与隐性衰减,造成停机损失高、运维成本高、误判漏判率高。依托GB/T…...
