安装miniconda
下载源代码:
$ git clone --recursive https://github.com/togethercomputer/OpenChatKit.git
安装miniconda:
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ sh ./Miniconda3-latest-Linux-x86_64.sh
$ /home/mklguy/miniconda3/bin/conda init
mklguy@mklguy--PC:~/ex/OpenChatKit$ /home/mklguy/miniconda3/bin/conda env create -f environment.yml
在V-P-N的挟持下,创建成功:
在~/.bashrc中会出现这么一段,导致每次进入系统后,会先进入conda环境:
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/mklguy/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
if [ -f "/home/mklguy/miniconda3/etc/profile.d/conda.sh" ]; then
. "/home/mklguy/miniconda3/etc/profile.d/conda.sh"
export PATH="/home/mklguy/miniconda3/bin:$PATH"
unset __conda_setup
# <<< conda initialize <<<
备份文件后删掉这段试试。
$ source .bashrc
也可以使用 pip3再安装整个系统可用的 pytorch:
$ pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu118
用经典案例做一个测试:
from __future__ import print_function
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
from torchvision import datasets, transforms
from torch.optim.lr_scheduler import StepLR
import argparse
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(1, 32, 3, 1)
self.conv2 = nn.Conv2d(32, 64, 3, 1)
self.dropout1 = nn.Dropout(0.25)
self.dropout2 = nn.Dropout(0.5)
self.fc1 = nn.Linear(9216, 128)
self.fc2 = nn.Linear(128, 10)
def forward(self, x):
x = self.conv1(x)
x = F.relu(x)
x = self.conv2(x)
x = F.relu(x)
x = F.max_pool2d(x, 2)
x = self.dropout1(x)
x = torch.flatten(x, 1)
x = self.fc1(x)
x = F.relu(x)
x = self.dropout2(x)
x = self.fc2(x)
output = F.log_softmax(x, dim=1)
return output
def train(args, model, device, train_loader, optimizer, epoch):
model.train()
for batch_idx, (data, target) in enumerate(train_loader):
data, target = data.to(device), target.to(device)
optimizer.zero_grad()
output = model(data)
loss = F.nll_loss(output, target)
loss.backward()
optimizer.step()
if batch_idx % args.log_interval == 0:
print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(
epoch, batch_idx * len(data), len(train_loader.dataset),
100. * batch_idx / len(train_loader), loss.item()))
if args.dry_run:
break
def test(model, device, test_loader):
model.eval()
test_loss = 0
correct = 0
with torch.no_grad():
for data, target in test_loader:
data, target = data.to(device), target.to(device)
output = model(data)
test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch loss
pred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probability
correct += pred.eq(target.view_as(pred)).sum().item()
test_loss /= len(test_loader.dataset)
print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format(
test_loss, correct, len(test_loader.dataset),
100. * correct / len(test_loader.dataset)))
def main():
# Training settings
parser = argparse.ArgumentParser(description='PyTorch MNIST Example')
parser.add_argument('--batch-size', type=int, default=64, metavar='N',
help='input batch size for training (default: 64)')
parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N',
help='input batch size for testing (default: 1000)')
parser.add_argument('--epochs', type=int, default=14, metavar='N',
help='number of epochs to train (default: 14)')
parser.add_argument('--lr', type=float, default=1.0, metavar='LR',
help='learning rate (default: 1.0)')
parser.add_argument('--gamma', type=float, default=0.7, metavar='M',
help='Learning rate step gamma (default: 0.7)')
parser.add_argument('--no-cuda', action='store_true', default=False,
help='disables CUDA training')
parser.add_argument('--dry-run', action='store_true', default=False,
help='quickly check a single pass')
parser.add_argument('--seed', type=int, default=1, metavar='S',
help='random seed (default: 1)')
parser.add_argument('--log-interval', type=int, default=10, metavar='N',
help='how many batches to wait before logging training status')
parser.add_argument('--save-model', action='store_true', default=False,
help='For Saving the current Model')
args = parser.parse_args()
use_cuda = not args.no_cuda and torch.cuda.is_available()
torch.manual_seed(args.seed)
device = torch.device("cuda" if use_cuda else "cpu")
train_kwargs = {'batch_size': args.batch_size}
test_kwargs = {'batch_size': args.test_batch_size}
if use_cuda:
cuda_kwargs = {'num_workers': 1,
'pin_memory': True,
'shuffle': True}
train_kwargs.update(cuda_kwargs)
test_kwargs.update(cuda_kwargs)
transform=transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.1307,), (0.3081,))
dataset1 = datasets.MNIST('../data', train=True, download=True,
transform=transform)
dataset2 = datasets.MNIST('../data', train=False,
transform=transform)
train_loader = torch.utils.data.DataLoader(dataset1,**train_kwargs)
test_loader = torch.utils.data.DataLoader(dataset2, **test_kwargs)
model = Net().to(device)
optimizer = optim.Adadelta(model.parameters(), lr=args.lr)
scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma)
for epoch in range(1, args.epochs + 1):
train(args, model, device, train_loader, optimizer, epoch)
test(model, device, test_loader)
scheduler.step()
if args.save_model:
torch.save(model.state_dict(), "mnist_cnn.pt")
if __name__ == '__main__':
main()
$ python3 hello_mnist.py
$ sudo apt-get install texinfo perl openjade dh-autoreconf autoconf libcurl4-gnutls-dev libexpat1-dev gettext zlib1g-dev libssl-dev asciidoc xmlto docbook2x
$ wget https://www.kernel.org/pub/software/scm/git/git-2.40.0.tar.gz
$ make prefix=/usr all doc info ;# as yourself
# make prefix=/usr install install-doc install-html install-info ;# as root
$ wget https://github.com/git-lfs/git-lfs/releases/download/v3.3.0/git-lfs-linux-amd64-v3.3.0.tar.gz
$ sudo ./install.sh
##:: OK了
安装 huggingface的 transformers:
$ pip3 install transformers
下载参数数据并测试:
from transformers import pipeline
pipe = pipeline(model='togethercomputer/GPT-NeoXT-Chat-Base-20B')
pipe('''<human>: Hello!\n<bot>:''')
上面第二句的执行是这样的:第一波至少下载接近50GB的参数:
OpenChatKit是一个由前OpenAI研究员共同打造的开源聊天机器人平台。它包含了训练好的大型语言模型、定制配方和可扩展的检索系统,可以帮助用户快速构建高精度、多功能的聊天机器人应用。
其中,最核心的组件是一个经过微调的、具有200亿参数的语言模型——GPT-NeoXT-Chat-Base-20B。这个模型基于EleutherAI的GPT-NeoX模型,并使用了4300万条高质量指令进行训练。这使得OpenChatKit在处理聊天对话时可以提供高精度、流畅的回答。
开源React聊天小部件
ChatKit是一个开放源代码库,可让您创建一个Chat Widget并将其连接到任何后端,例如Chatbot / NLP / Live Chat引擎或Messenger。
用React和Storeon制作。
该存储库包含开发ChatKit所需的所有组件。
:globe_showing_Americas:
:open_book:
:joystick:
:two_hearts:
基于React的组件
Facebook
LiveTex
ChatKit库
在开始使用ChatKit之前,必须在计算机上安装以下软件:
吉特使用说明书在这里。
Node.js。 使用说明书在这里。
NPM 。 使用说明书在这里。
元。 使用说明书在这里。
Meta NPM说明手册在这里。
要安装ChatKit,请在终端中运行以下命令:
git clone
由于最近项目的需求,正好要做一款涉及聊天的APP,所以优先考虑到了ChatKit这款强大的开源组件,同时它提供完全自由的授权协议,支持二次开发。但是通过看官方的文档,发现它在其中集成了很多的胶水函数,在我真正实现起来还是有很多不容易的地方。
所以在这里我把整个流程框架和一些基础点列出来,也算对项目过程的一个小总结。可以在这里获取组件Demo:git clone –depth=1 https://g
最近在做用微信小程序实现实时通话,一个页面同时使用了live-pusher和live-player。中途踩了许多坑,在这里做一下总结,希望能帮到大家。
1问题:Live-player播着播着没声音了。
原因:对live-pusher进行start, stop,resume等操作时,会停止所有正在播放的live-player的声音。(暂时没发现调用live-pusher的pause会引起这个问题。)
两种解决方案:
一种是避免在live-player播放后操作live-pusher。比如进页面直接开启live-pusher,然后不再操作。官方DEMO就是使用这种方案。
第二种,则是每次操作l
/bin 常用的命令 binary file 的目錄
/boot 存放系统启动时必须读取的档案,包括核心 (kernel) 在内
/boot/grub/menu.lst GRUB设置
/boot/vmlinuz 内核
/boot/initrd 核心解壓縮所需 RAM Disk
/dev 系统周边设备
/etc 系统相关设定文件
/etc/DIR_COLORS 设定颜色
/etc/HOSTNAME 设定用户的节点名
/etc/NETWORKING 只有YES标明网络存在
奔跑的小蜗牛0612: