【GitHub每日速递 251022】81.2k star, Bun:替代 Node.js 的全栈 JavaScript 神器,快速上手攻略来了!
原文:https://mp.weixin.qq.com/s/RUljlo23iM1XCVizwg4rog
Bun:替代 Node.js 的全栈 JavaScript 神器,快速上手攻略来了!
bun是一个集JavaScript运行时、打包工具、测试运行器和包管理器于一体的高性能开发工具。简单讲,它用一个工具解决了JavaScript开发中的多种需求,且速度极快。适用人群:前端开发者、Node.js开发者
项目地址:https://github.com/oven-sh/bun
主要语言:Zig
stars: 81.2k
核心介绍
Bun 是一个面向 JavaScript 和 TypeScript 应用的一体化工具包,以单个可执行文件 bun
的形式发布。其核心是 Bun 运行时,这是一个快速的 JavaScript 运行时,旨在作为 Node.js 的直接替代品。它用 Zig 编写,底层由 JavaScriptCore 驱动,能显著减少启动时间和内存使用。
主要功能
- 运行代码:支持直接运行 TypeScript 和 JSX 文件,如
bun run index.tsx
。 - 测试运行:内置测试运行器,可使用
bun test
运行测试。 - 脚本执行:能运行
package.json
中的脚本,例如bun run start
。 - 包管理:作为兼容 Node.js 的包管理器,可执行
bun install <pkg>
安装包,bunx
执行包等操作。
安装与升级
- 支持系统:支持 Linux(x64 & arm64)、macOS(x64 & Apple Silicon)和 Windows(x64)。
- 安装方式:提供多种安装方式,如使用安装脚本、npm、Homebrew、Docker 等。
- 升级命令:使用
bun upgrade
升级到最新版本,bun upgrade --canary
升级到最新的 canary 版本。
优势
- 高性能:启动速度快,内存使用少,其内置工具比现有同类工具速度更快。
- 兼容性:可在现有的 Node.js 项目中使用,无需大量修改。
- 一体化:集运行时、测试运行器、脚本运行器和包管理器等多种功能于一身,减少了对众多
node_modules
的依赖。
应用场景
- Web 开发:可用于构建各类 Web 应用,搭配 React、Next.js、Nuxt 等框架。
- 脚本编写:执行自动化脚本、工具脚本等。
- 测试:运行单元测试、集成测试等。
详细文档与指南
仓库提供了丰富的文档和指南,涵盖了从基础介绍、安装、快速入门到各种功能的详细使用说明,例如:
- 快速链接:包含介绍、模板、CLI、运行时、包管理、打包器、测试运行器、包运行器和 API 等方面的详细文档链接。
- 指南:提供了二进制操作、生态系统集成、HTML 处理、HTTP 操作、安装、进程管理、文件读写、运行时配置、流处理、测试、实用工具、WebSocket 和文件写入等多个领域的使用指南。
🤩爆火!Diffusers库带你玩转图像、音频和3D分子生成
项目地址:https://github.com/huggingface/diffusers
主要语言:Python
stars: 31.2k
核心功能
🤗 Diffusers 是用于生成图像、音频甚至分子 3D 结构的最先进预训练扩散模型库,是一个模块化工具包,支持简单推理和自定义扩散模型训练。它有三个核心组件:
- 扩散管道:先进的扩散管道,只需几行代码即可运行推理。
- 噪声调度器:可互换的噪声调度器,能够控制不同的扩散速度和输出质量。
- 预训练模型:预训练的模型可作为构建块,与调度器结合创建自己的端到端扩散系统。
优势
- 注重可用性:设计理念强调可用性高于性能、简单性高于便捷性、可定制性高于抽象性。
- 安装便捷:支持通过 PyPI 或 Conda 在虚拟环境中安装,同时对 Apple Silicon(M1/M2)也有相应支持。
- 使用简单:提供快速入门示例,无论是使用预训练模型生成图像,还是构建自己的扩散系统都很容易上手。
- 文档丰富:提供详细的文档,涵盖教程、加载配置、推理管道、优化和训练等方面,方便用户学习和使用。
- 社区活跃:欢迎开源社区贡献,提供贡献指南和不同类型的贡献机会,还有公共 Discord 频道供交流。
安装方式
推荐在虚拟环境中安装,支持 PyTorch,提供了 pip
和 conda
两种安装方式:
- 使用
pip
:pip install --upgrade diffusers[torch]
- 使用
conda
:conda install -c conda-forge diffusers
对于 Apple Silicon(M1/M2),可参考 How to use Stable Diffusion in Apple Silicon 指南。
快速开始
- 使用预训练模型生成图像:可以使用
from_pretrained
方法加载预训练扩散模型,轻松实现文本到图像的生成。
from diffusers import DiffusionPipeline
import torch
pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16)
pipeline.to("cuda")
pipeline("An image of a squirrel in Picasso style").images[0]
- 构建自己的扩散系统:也可以深入研究模型和调度器工具箱,构建自己的扩散系统。
from diffusers import DDPMScheduler, UNet2DModel
from PIL import Image
import torch
scheduler = DDPMScheduler.from_pretrained("google/ddpm-cat-256")
model = UNet2DModel.from_pretrained("google/ddpm-cat-256").to("cuda")
scheduler.set_timesteps(50)
sample_size = model.config.sample_size
noise = torch.randn((1, 3, sample_size, sample_size), device="cuda")
input = noise
for t in scheduler.timesteps:
with torch.no_grad():
noisy_residual = model(input, t).sample
prev_noisy_sample = scheduler.step(noisy_residual, t, input).prev_sample
input = prev_noisy_sample
image = (input / 2 + 0.5).clamp(0, 1)
image = image.cpu().permute(0, 2, 3, 1).numpy()[0]
image = Image.fromarray((image * 255).round().astype("uint8"))
image
文档导航
- 教程:学习如何使用库的最重要功能,如使用模型和调度器构建自己的扩散系统,以及训练自己的扩散模型。
- 加载:指导如何加载和配置库的所有组件(管道、模型和调度器),以及如何使用不同的调度器。
- 推理管道:指导如何使用管道进行不同的推理任务、批量生成、控制生成输出和随机性,以及如何为库贡献管道。
- 优化:指导如何优化扩散模型,使其运行更快并消耗更少的内存。
- 训练:指导如何使用不同的训练技术为不同的任务训练扩散模型。
流行任务和管道
涵盖了多种任务,如无条件图像生成、文本到图像、文本引导的图像到图像、文本引导的图像修复、图像变异和超分辨率等,并提供了相应的管道和 Hugging Face Hub 上的模型链接。
相关库
有众多流行的库使用了 🧨 Diffusers,如 microsoft/TaskMatrix、invoke-ai/InvokeAI 等,还有超过 14000 个其他优秀的 GitHub 仓库也在使用。
应用场景
- 创意设计:可以根据文本描述生成各种风格的图像,为设计师提供创意灵感,如生成广告海报、艺术插画等。
- 数据增强:在机器学习训练中,通过生成不同的图像、音频等数据,增加训练数据的多样性,提高模型的泛化能力。
- 分子结构研究:生成分子的 3D 结构,帮助科研人员进行分子结构的分析和研究。
- 娱乐行业:用于游戏、动漫等领域的内容创作,如生成游戏角色、场景等。