标签归档:pytorch

Fairseq-用Python编写的Facebook AI Research Sequence-to-Sequence工具包

Fairseq(-py)是一个序列建模工具包,允许研究人员和开发人员为翻译、摘要、语言建模和其他文本生成任务培训自定义模型

我们提供了各种序列建模论文的参考实现:

实施文件一览表

最新消息:

以前的更新

功能:

我们还提供pre-trained models for translation and language modeling以一种方便的方式torch.hub接口:

en2de = torch.hub.load('pytorch/fairseq', 'transformer.wmt19.en-de.single_model')
en2de.translate('Hello world', beam=5)
# 'Hallo Welt'

请参阅Pych Torch Hub教程,了解translationRoBERTa有关更多示例,请参阅

要求和安装

  • PyTorch版本>=1.5.0
  • Python版本>=3.6
  • 要培训新型号,您还需要NVIDIA图形处理器和NCCL
  • 要安装airseq,请执行以下操作并在当地发展:
git clone https://github.com/pytorch/fairseq
cd fairseq
pip install --editable ./

# on MacOS:
# CFLAGS="-stdlib=libc++" pip install --editable ./

# to install the latest stable release (0.10.x)
# pip install fairseq
  • 提供更快的培训安装NVIDIAapex库:
git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" \
  --global-option="--deprecated_fused_adam" --global-option="--xentropy" \
  --global-option="--fast_multihead_attn" ./
  • 对于大型数据集安装PyArrowpip install pyarrow
  • 如果您使用Docker,请确保使用以下命令增加共享内存大小--ipc=host--shm-size作为命令行选项执行以下操作nvidia-docker run

快速入门

这个full documentation包含有关入门、培训新模型以及使用新模型类型和任务扩展airseq的说明

预先训练的模型和示例

我们为下面列出的几个任务提供预先训练的模型和预处理的二进制测试集,以及示例培训和评估命令

我们还提供了更详细的自述文件,以转载特定论文的结果:

加入FIRSEQ社区

许可证

airseq(-py)是麻省理工学院授权的。许可证也适用于预先培训的模型

引文

请引述如下:

@inproceedings{ott2019fairseq,
  title = {fairseq: A Fast, Extensible Toolkit for Sequence Modeling},
  author = {Myle Ott and Sergey Edunov and Alexei Baevski and Angela Fan and Sam Gross and Nathan Ng and David Grangier and Michael Auli},
  booktitle = {Proceedings of NAACL-HLT 2019: Demonstrations},
  year = {2019},
}

Pytorch-lightning-用于高性能人工智能研究的轻量级PyTorch包装器

Lightning设计理念

Lightning使用以下原则构建PyTorch代码:

Lightning强制您的代码采用以下结构,从而使其可重用和可共享:

  • 研究代码(LightningModule)
  • 工程代码(您删除,并由培训师处理)
  • 非必要的研究代码(日志记录等,这在回调中使用)
  • 数据(使用PyTorch DataLoaders或将其组织到LightningDataModule中)

一旦这样做了,您就可以在多GPU、TPU、CPU上进行培训,甚至可以在不更改代码的情况下进行16位精度的培训!

开始使用我们的2 step guide


持续集成

Lightning在多个GPU、TPU CPU上进行了严格的测试,并针对主要的Python和PyTorch版本进行了测试

当前生成状态
系统/火炬版本 1.4(最低请求。) 1.5 1.6 1.7 1.8(LTS) 1.9(最新)
Conda py3.7[Linux]
Linux py3.7[GPU**]
Linux py3.{6,7}[TPU*]
Linux py3.{6,7,8,9}
OSX py3.{6,7,8,9}
Windows py3.{6,7,8,9}
  • **测试在两个NVIDIA P100上运行
  • *测试在Google GKE TPUv2/3上运行
  • TPU py3.7意味着我们支持Colab和Kaggle环境

如何使用

步骤0:安装

从PyPI轻松安装

pip install pytorch-lightning
其他安装选项

使用可选依赖项安装

pip install pytorch-lightning['extra']

孔达

conda install pytorch-lightning -c conda-forge

安装稳定版1.3.x

1.3[稳定]的实际状态如下:





从源安装未来版本

pip install git+https://github.com/PytorchLightning/pytorch-lightning.git@release/1.3.x --upgrade

安装尖端技术-未来1.4

夜间从源安装(不保证)

pip install https://github.com/PyTorchLightning/pytorch-lightning/archive/master.zip

或通过测试PyPI

pip install -iU https://test.pypi.org/simple/ pytorch-lightning

步骤1:添加这些导入

import os
import torch
from torch import nn
import torch.nn.functional as F
from torchvision.datasets import MNIST
from torch.utils.data import DataLoader, random_split
from torchvision import transforms
import pytorch_lightning as pl

步骤2:定义LightningModule(nn.Module子类)

LightningModule定义完整的系统(即:GAN、自动编码器、BERT或简单图像分类器)

class LitAutoEncoder(pl.LightningModule):

    def __init__(self):
        super().__init__()
        self.encoder = nn.Sequential(nn.Linear(28 * 28, 128), nn.ReLU(), nn.Linear(128, 3))
        self.decoder = nn.Sequential(nn.Linear(3, 128), nn.ReLU(), nn.Linear(128, 28 * 28))

    def forward(self, x):
        # in lightning, forward defines the prediction/inference actions
        embedding = self.encoder(x)
        return embedding

    def training_step(self, batch, batch_idx):
        # training_step defines the train loop. It is independent of forward
        x, y = batch
        x = x.view(x.size(0), -1)
        z = self.encoder(x)
        x_hat = self.decoder(z)
        loss = F.mse_loss(x_hat, x)
        self.log('train_loss', loss)
        return loss

    def configure_optimizers(self):
        optimizer = torch.optim.Adam(self.parameters(), lr=1e-3)
        return optimizer

注:Training_Step定义训练循环。转发定义了LightningModule在推理/预测期间的行为方式

第三步:训练!

dataset = MNIST(os.getcwd(), download=True, transform=transforms.ToTensor())
train, val = random_split(dataset, [55000, 5000])

autoencoder = LitAutoEncoder()
trainer = pl.Trainer()
trainer.fit(autoencoder, DataLoader(train), DataLoader(val))

高级功能

闪电已经过去了40+ advanced features专为专业的大规模人工智能研究而设计

以下是一些示例:

突出显示的功能代码片段
# 8 GPUs
# no code changes needed
trainer = Trainer(max_epochs=1, gpus=8)

# 256 GPUs
trainer = Trainer(max_epochs=1, gpus=8, num_nodes=32)
在不更改代码的TPU上进行培训
# no code changes needed
trainer = Trainer(tpu_cores=8)
16位精度
# no code changes needed
trainer = Trainer(precision=16)
实验管理员
from pytorch_lightning import loggers

# tensorboard
trainer = Trainer(logger=TensorBoardLogger('logs/'))

# weights and biases
trainer = Trainer(logger=loggers.WandbLogger())

# comet
trainer = Trainer(logger=loggers.CometLogger())

# mlflow
trainer = Trainer(logger=loggers.MLFlowLogger())

# neptune
trainer = Trainer(logger=loggers.NeptuneLogger())

# ... and dozens more
提前停止
es = EarlyStopping(monitor='val_loss')
trainer = Trainer(callbacks=[es])
检查点设置
checkpointing = ModelCheckpoint(monitor='val_loss')
trainer = Trainer(callbacks=[checkpointing])
导出为Torchscript(JIT)(生产用途)
# torchscript
autoencoder = LitAutoEncoder()
torch.jit.save(autoencoder.to_torchscript(), "model.pt")
导出到ONNX(生产用途)
# onnx
with tempfile.NamedTemporaryFile(suffix='.onnx', delete=False) as tmpfile:
    autoencoder = LitAutoEncoder()
    input_sample = torch.randn((1, 64))
    autoencoder.to_onnx(tmpfile.name, input_sample, export_params=True)
    os.path.isfile(tmpfile.name)

培训回路的高级控制(高级用户)

对于复杂/专业级别的工作,您可以选择完全控制培训循环和优化器

class LitAutoEncoder(pl.LightningModule):
    def __init__(self):
        super().__init__()
        self.automatic_optimization = False

    def training_step(self, batch, batch_idx):
        # access your optimizers with use_pl_optimizer=False. Default is True
        opt_a, opt_b = self.optimizers(use_pl_optimizer=True)

        loss_a = ...
        self.manual_backward(loss_a, opt_a)
        opt_a.step()
        opt_a.zero_grad()

        loss_b = ...
        self.manual_backward(loss_b, opt_b, retain_graph=True)
        self.manual_backward(loss_b, opt_b)
        opt_b.step()
        opt_b.zero_grad()

相对于非结构化PyTorch的优势

  • 型号变得与硬件无关
  • 代码清晰易读,因为工程代码是抽象出来的
  • 更容易复制
  • 犯的错误更少,因为闪电处理了棘手的工程
  • 保持所有的灵活性(LightningModules仍然是PyTorch模块),但删除了大量的样板文件
  • Lightning与流行的机器学习工具进行了数十次集成
  • Tested rigorously with every new PR我们测试PyTorch和Python支持的版本、每个操作系统、多个GPU甚至TPU的每种组合
  • 最小运行速度开销(与纯PyTorch相比,每历元约300毫秒)

示例

你好,世界
对比学习
NLP
强化学习
愿景
经典ML

社区

闪电社区由

  • 10+ core contributors他们都是来自顶尖人工智能实验室的专业工程师、研究科学家和博士生的混合体
  • 480+活跃的社区贡献者

想要帮助我们构建Lightning并为数千名研究人员减少样板吗?Learn how to make your first contribution here

闪电也是PyTorch ecosystem这要求项目有可靠的测试、文档和支持

寻求帮助

如果您有任何问题,请:

  1. Read the docs
  2. Search through existing Discussions,或add a new question
  3. Join our slack

资金来源

We’re venture funded为确保我们能够提供全天候支持,请聘请全职员工,参加会议,并通过实施您要求的功能加快行动速度


网格AI

网格AI是我们在云上大规模训练模型的平台!

注册我们的免费社区层here

要使用GRID,请使用您的常规命令:

python my_model.py --learning_rate 1e-6 --layers 2 --gpus 4

并将其更改为使用GRID TRAIN命令:

grid train --grid_gpus 4 my_model.py --learning_rate 'uniform(1e-6, 1e-1, 20)' --layers '[2, 4, 8, 16]'

上面的命令将启动(20*4)个实验,每个实验在4个GPU(320个GPU!)上运行-不对代码进行任何更改


牌照

请遵守此存储库中列出的Apache 2.0许可证。此外,Lightning框架正在申请专利

BibTeX

如果您想引用该框架,请随意使用(但只有在您喜欢它的情况下😊)或zenodo

@article{falcon2019pytorch,
  title={PyTorch Lightning},
  author={Falcon, WA, et al.},
  journal={GitHub. Note: https://github.com/PyTorchLightning/pytorch-lightning},
  volume={3},
  year={2019}
}

Fastai – 快速深度学习模块

欢迎光临Fastai

FAST AI使用现代最佳实践简化了快速准确的神经网络训练

正在安装

您可以在不安装的情况下使用Fastai,方法是使用Google Colab事实上,本文档的每一页还可以作为交互式笔记本使用-单击任何页面顶部的“Open in CoLab”将其打开(请确保将Colab运行时更改为“GPU”以使其快速运行!)请参阅上的fast.ai文档Using Colab了解更多信息

只要你运行的是Linux或Windows(不支持Mac),你就可以用conda在你自己的机器上安装Fastai(强烈推荐)。对于Windows,请参阅“在Windows上运行”了解重要说明

如果您使用的是miniconda(推荐)然后运行(请注意,如果您替换conda使用mamba安装过程将更快、更可靠):

conda install -c fastchan fastai

或者如果您正在使用Anaconda然后运行:

conda install -c fastchan fastai anaconda

要使用pip安装,请使用:pip install fastai如果使用pip安装,则应首先按照PyTorch安装PyTorchinstallation instructions

如果您计划自己开发Fastai,或者想要走在前列,您可以使用可编辑安装(如果这样做,您还应该使用的可编辑安装fastcore来配合它。)首先安装PyTorch,然后:

git clone https://github.com/fastai/fastai
pip install -e "fastai[dev]"

学习速度快

开始快速学习(和深度学习)的最好方法是阅读the book,并完成the free course

要了解使用FAST AI可能实现的功能,请查看Quick Start,它展示了如何使用大约5行代码来构建图像分类器、图像分割模型、文本情感模型、推荐系统和表格模型。对于每个应用程序,代码基本相同

通读一下Tutorials学习如何在您自己的数据集上训练您自己的模型。使用导航侧栏浏览FAST AI文档。这里记录了每个类、函数和方法

要了解图书馆的设计和动机,请阅读peer reviewed paper

关于FAST

Fastai是一个深度学习库,它为从业者提供高级组件,这些组件可以快速、轻松地在标准深度学习领域提供最先进的结果,并为研究人员提供可以混合和匹配的低级组件,以建立新的方法。它的目标是在易用性、灵活性或性能方面不做实质性妥协的情况下完成这两件事。这要归功于精心分层的体系结构,该体系结构以分离的抽象方式表达了许多深度学习和数据处理技术的公共底层模式。通过利用底层Python语言的动态性和PyTorch库的灵活性,可以简洁而清晰地表达这些抽象。FAST AI包括:

  • 一种新的Python类型调度系统和张量的语义类型层次结构
  • 一个GPU优化的计算机视觉库,可以在纯Python中扩展
  • 一种优化器,它将现代优化器的常见功能重构为两个基本部分,允许在4-5行代码中实现优化算法
  • 一种新颖的双向回调系统,可以访问数据、模型或优化器的任何部分,并在培训期间随时更改它们
  • 一种全新的数据挡路接口
  • 还有更多

FAST AI围绕两个主要设计目标进行组织:平易近人和快速高效,同时也是深度可破解和可配置的。它构建在提供可组合构建块的低级API层次结构之上。这样,想要重写高级API的一部分或添加特定行为以满足其需求的用户不必学习如何使用最低级别

从其他库迁移

从普通的PyTorch、Ignite或任何其他基于PyTorch的库迁移非常容易,甚至可以将Fastai与其他库结合使用。通常,您将能够使用所有现有的数据处理代码,但将能够减少培训所需的代码量,并更容易地利用现代最佳实践。以下是一些受欢迎的库中的迁移指南,可帮助您上路:

Windows支持

使用安装时mambaconda替换-c fastchan在使用的安装中-c pytorch -c nvidia -c fastai,因为Windows当前不支持Fastchan

由于Jupyter和Windows上的Python多处理问题,num_workersDataloader自动重置为0,以避免Jupyter挂起。这使得Windows上的Jupyter上的计算机视觉等任务比Linux上的要慢很多倍。如果从脚本使用FastAI,则不存在此限制

看见this example要充分利用Windows上的Fastai API,请执行以下操作

测试

要并行运行测试,请启动:

nbdev_test_nbsmake test

要通过所有测试,您需要安装以下可选依赖项:

pip install "sentencepiece<0.1.90" wandb tensorboard albumentations pydicom opencv-python scikit-image pyarrow kornia \
    catalyst captum neptune-cli

测试是使用nbdev,例如,请参阅的文档test_eq

贡献

克隆此存储库后,请运行nbdev_install_git_hooks在你的航站楼里。这将设置git挂钩,它会清理笔记本以删除笔记本中存储的无关内容(例如,您运行了哪些单元格),这会导致不必要的合并冲突。

在提交PR之前,请检查当地图书馆和笔记本是否匹配。剧本nbdev_diff_nbs我可以让你知道当地图书馆和笔记本有什么不同

  • 如果您对其中一个导出的单元格中的笔记本进行了更改,则可以使用以下命令将其导出到库nbdev_build_libmake fastai
  • 如果您对库进行了更改,则可以使用以下命令将其导出回笔记本nbdev_update_lib

码头集装箱

对于那些对这个项目的官方码头集装箱感兴趣的人,可以在here

MadeWithML 了解如何通过ML负责任地交付产品

基础知识

通过直观的解释、干净的代码和可视化学习ML的基础

🔢三个基金会 📈数据建模 🤖*深度学习
Notebooks Linear Regression CNNs
Python Logistic Regression Embeddings
NumPy Neural Network RNNs
Pandas Data Quality Transformers
PyTorch Utilities

📆更多话题即将到来!
Subscribe查看我们每月更新的新内容

MLOPS

了解如何应用ML来构建生产级产品以交付价值

📦新产品 📝使用脚本编写 ♻️*可重现性
Objective Organization Git
Solution Packaging Pre-commit
Iteration Documentation Versioning
🔢三个数据 Styling Docker
Labeling Makefile 🚀三个产品的生产
Preprocessing Logging Dashboard
Exploratory data analysis 📦3个接口 CI/CD workflows
Splitting Command-line Infrastructure
Augmentation RESTful API Monitoring
📈数据建模 ✅测试结果: Pipelines
Evaluation Code Feature store
Experiment tracking Data
Optimization Models

📆每个月都有新的课程!
Subscribe查看我们每月更新的新内容

常见问题解答

这个内容是为谁准备的?

  • Software engineers希望学习ML并成为更好的软件工程师
  • Data scientists谁想了解如何通过ML负责任地交付价值
  • College graduates希望学习该行业所需的实用技能
  • Product Managers谁想为ML应用程序开发技术基础

它的结构是什么?

课程将每周发布一次,每节课程包括:

  • intuition:将涵盖的概念及其如何组合在一起的高级概述
  • code:说明概念的简单代码示例
  • application:将概念应用于我们的具体任务
  • extensions:简要介绍适用于不同情况的其他工具和技术

是什么让这个内容独一无二的呢?

  • hands-on:如果您在线搜索Production ML或MLOps,您会找到很棒的博客帖子和tweet。但是为了真正理解这些概念,您需要实现它们。不幸的是,由于规模、专有内容和昂贵的工具,您没有看到很多运行Production ML的内部工作原理。然而,Made with ML是免费的、开放的和活生生的,这使得它成为社区完美的学习机会
  • intuition-first:我们永远不会直接跳到代码上去。在每节课中,我们都会培养对概念的直觉,并从产品的角度来思考。
  • software engineering:本课程不只是关于ML。事实上,它主要是关于干净的软件工程!我们将介绍一些重要的概念,如版本控制、测试、日志记录等,它们可以真正成为生产级产品
  • focused yet holistic:对于每个概念,我们不仅会介绍对我们的特定任务最重要的内容(这是案例研究方面),而且还会介绍相关的方法(这是指导方面),这些方法在其他情况下可能会被证明是有用的

作者是谁?

  • 我在苹果公司部署了大规模ML系统,也在初创公司部署了受约束的较小系统,我想与大家分享我学到的共同原则
  • 与我保持联系TwitterLinkedIn

为什么这个是免费的?

虽然这个内容是为每个人准备的,但它特别针对那些没有太多学习机会的人。我相信创造力和智慧是随机分布的,而机会是孤立的。我想让更多的人创造并为创新做出贡献


要引用此内容,请使用:

@misc{madewithml,
    title  = "Made With ML",
    author = "Goku Mohandas",
    url    = "https://madewithml.com/"
    year   = "2021",
}

Real-Time-Voice-Cloning 5秒内克隆语音,实时生成任意语音

实时语音克隆

此存储库是Transfer Learning from Speaker Verification to
Multispeaker Text-To-Speech Synthesis
(SV2TTS),具有实时工作的声码器。请随时查看my thesis如果你很好奇,或者你在找我没有记录的信息。大多数情况下,我建议快速浏览一下导言之外的数字。

SV2TTS是一个三阶段深度学习框架,它允许从几秒钟的音频创建语音的数字表示,并使用它来调整文本到语音的模型,该模型经过训练以概括为新的语音

视频演示(点击图片):

已实施的文件

URL 指定 标题 实施来源
1806.04558 SV2TTS 从说话人确认到多说话人文语合成的转移学习 此回购
1802.08435 WaveRNN(声码器) 高效的神经音频合成 fatchord/WaveRNN
1703.10135 泰科加速器(合成器) Taco tron:走向端到端语音合成 fatchord/WaveRNN
1710.10467 GE2E(编码器) 说话人确认的广义端到端损耗 此回购

新闻

14/02/21:这个回购现在运行在PyTorch上,而不是TensorFlow上,这要归功于@Bluefish的帮助。如果希望改为运行TensorFlow版本,请签出提交5425557

13/11/19:我现在是全职工作,我不会再维持这个回购了。致任何阅读此文的人:

  • 如果你只想克隆你的声音(而不是别人的):我推荐我们的免费计划Resemble.AI你会得到更好的音质和更少的韵律错误
  • 如果这不是您的情况:继续使用此存储库,但您可能最终会对结果感到失望。如果你计划做一个严肃的项目,我的强烈建议是:另找一个TTS回收站。去here了解更多信息

20/08/19:我正在努力resemblyzer,一个独立的语音编码器软件包。您可以使用此回收站中经过训练的编码器型号与其配合使用

06/07/19:需要在远程服务器上的坞站容器中运行吗?看见here

25/06/19:为合成器增加了对低内存GPU(~2 GB)的实验支持。经过--low_memdemo_cli.pydemo_toolbox.py来启用它。这会增加很大的开销,因此如果您有足够的VRAM,则不建议使用

设置

1.安装要求

Python 3.6或3.7运行工具箱所需的

  • 安装PyTorch(>=1.0.1)
  • 安装ffmpeg
  • pip install -r requirements.txt要安装剩余的必要软件包,请执行以下操作

2.下载预先训练好的模型

下载最新版本here

3.(可选)测试配置

在下载任何数据集之前,您可以通过以下方式开始测试配置:

python demo_cli.py

如果所有测试都通过了,你就可以走了

4.(可选)下载数据集

对于单独使用工具箱,我只推荐下载LibriSpeech/train-clean-100将内容提取为<datasets_root>/LibriSpeech/train-clean-100哪里<datasets_root>是您选择的目录。工具箱中支持其他数据集,请参阅here您可以不下载任何数据集,但是您需要将您自己的数据作为音频文件,否则您必须使用工具箱进行记录

5.启动工具箱

然后,您可以尝试该工具箱:

python demo_toolbox.py -d <datasets_root>

python demo_toolbox.py

取决于您是否下载了任何数据集。如果您正在运行X服务器或出现错误Aborted (core dumped),请参见this issue