我正在使用 V100 GPU、高 RAM 模式在 google colab 上开发一个 LLM 项目,这些是我的依赖项:
git+https://github.com/pyannote/pyannote-audio
git+https://github.com/huggingface/transformers.git@v4.34.1
openai==0.28
ffmpeg-python
pandas==1.5.0
tokenizers==0.14
torch==2.1.1
torchaudio==2.1.1
tqdm==4.64.1
EasyNMT==2.0.2
psutil==5.9.2
requests
pydub
docxtpl
faster-whisper==0.10.0
git+https://github.com/openai/whisper.git
Run Code Online (Sandbox Code Playgroud)
这是我导入的所有内容:
from faster_whisper import WhisperModel
from datetime import datetime, timedelta
from time import time
from pathlib import Path
import pandas as pd
import os
from pydub import AudioSegment
import numpy as np
from sklearn.cluster import AgglomerativeClustering
from sklearn.metrics import silhouette_score
import requests
import torch
import pyannote.audio
from pyannote.audio.pipelines.speaker_verification import PretrainedSpeakerEmbedding
from pyannote.audio import Audio …Run Code Online (Sandbox Code Playgroud) python pytorch google-colaboratory openai-whisper large-language-model
我正在尝试微调 LLM
到目前为止我的代码:
from datasets import load_dataset, DatasetDict, Dataset
from transformers import (
AutoTokenizer,
AutoConfig,
AutoModelForSequenceClassification,
DataCollatorWithPadding,
TrainingArguments,
Trainer)
from peft import PeftModel, PeftConfig, get_peft_model, LoraConfig
import evaluate
import torch
import numpy as np
# load dataset
dataset = load_dataset('TokenBender/code_instructions_122k_alpaca_style')
dataset
Run Code Online (Sandbox Code Playgroud)
错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In [12], line 2
1 # load dataset
----> 2 dataset = load_dataset('TokenBender/code_instructions_122k_alpaca_style')
3 dataset
File /usr/local/lib/python3.9/dist-packages/datasets/load.py:1664, in load_dataset(path, name, data_dir, data_files, split, cache_dir, features, download_config, download_mode, ignore_verifications, keep_in_memory, save_infos, …Run Code Online (Sandbox Code Playgroud) 以下显然会导致 C++23 中的编译错误:
int& f(int& x) {
int y = ++x;
return y;
}
Run Code Online (Sandbox Code Playgroud)
错误:cannot bind non-const lvalue reference of type 'int&' to an rvalue of type 'int'
但这似乎没有给我们一个警告:
int& f(int x) {
int &y = ++x;
return y;
}
Run Code Online (Sandbox Code Playgroud)
这在编译阶段是不是更难捕捉?
谢谢。
考虑这个数据框。
> (df <- data.frame(x=c(1, 2, NA, NA)))
x
1 1
2 2
3 NA
4 NA
Run Code Online (Sandbox Code Playgroud)
这里如何创建不存在的foo列?
> `<-`(df$foo[!is.na(df$x)], 999)
> df
x foo
1 1 999
2 2 999
3 NA NA
4 NA NA
Run Code Online (Sandbox Code Playgroud)
我在使用时需要先初始化它within。
> df <- data.frame(x=c(1, 2, NA, NA))
> df |> within(foo[!is.na(x)] <- 999)
Error: object 'foo' not found
> df |> within({foo <- NA_real_; foo[!is.na(x)] <- 999})
x foo
1 1 999
2 2 999
3 NA NA
4 …Run Code Online (Sandbox Code Playgroud) 我有一个带有成员变量的类std::vector。我还有一个成员函数,它采用std::vector由两个size_t参数指定的连续范围,并对其执行一些操作。
class MyClass {
std::vector<int> objects;
public:
void func(size_t start_index, size_t end_index);
}
Run Code Online (Sandbox Code Playgroud)
现在,我想size_t用单个参数替换两个std::span参数,以提高安全性、可读性和可维护性。然而,有一个障碍:在我的函数中,我需要能够恢复原始std::vector. 就像这样,我需要能够找到std::span原始数组中的开始位置。有没有办法做到这一点?如果没有,那么我是否别无选择,只能使用我原来笨重的设计?
objects.begin()(我最初尝试通过从我拥有的参数begin()的迭代器中减去来恢复第一个索引std::span,但这导致了编译错误。)
例如,给定一个算术表达式,x + y*z我想将其转换为add(x, multiply(y, z)).
> getAST <- function(ee) purrr::map_if(as.list(ee), is.call, getAST)
> getAST(quote(x + y*z))
[[1]]
`+`
[[2]]
x
[[3]]
[[3]][[1]]
`*`
[[3]][[2]]
y
[[3]][[3]]
z
Run Code Online (Sandbox Code Playgroud)
可以使用它rapply(result, as.character, how = "list")来获取字符而不是符号。
如何从这个 AST 中得到add(x, multiply(y, z))(结果)?当有一些括号时,这会变得更加复杂:
> getAST(quote((x + y) * z))
[[1]]
`*`
[[2]]
[[2]][[1]]
`(`
[[2]][[2]]
[[2]][[2]][[1]]
`+`
[[2]][[2]][[2]]
x
[[2]][[2]][[3]]
y
[[3]]
z
Run Code Online (Sandbox Code Playgroud)
我不要求答案必须使用该getAST功能。这只是一种可行的方法。
当然,在我的实际用例中,表达式更长。
这是没有括号时的情况的解决方案(我认为):
getAST <- function(ee) purrr::map_if(as.list(ee), is.call, getAST)
ast …Run Code Online (Sandbox Code Playgroud) 我有一个虚拟变量,如下所示:
df <- data.frame(year = seq(1990, 1997, 1),
x = c(1, 0, 0, 0, 1, 1, 0, 0))
year x
1990 1
1991 0
1992 0
1993 0
1994 1
1995 1
1996 0
1997 0
Run Code Online (Sandbox Code Playgroud)
如果前三年中任何一年的值非零,我想创建一个y等于的虚拟值。预期结果:1x
year x y
1990 1 NA
1991 0 NA
1992 0 1
1993 0 0
1994 1 1
1995 1 1
1996 0 1
1997 0 1
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?dplyr优选解决方案。
我正在尝试对笛卡尔积进行变换,最终使边缘变平。我收到的结果不是范围,这就是问题所在:
#include <ranges>
#include <vector>
#include <iostream>
#include <tuple>
#include <iterator>
int main() {
auto indicies = std::views::iota(0, 3);
auto coords = std::views::cartesian_product(indicies, indicies);
auto edges = coords | std::views::transform([](const auto& coord) {
using Coord = std::pair<std::size_t, std::size_t>;
using Edge = std::pair<Coord, Coord>;
std::vector<Edge> ret;
const auto& [x, y] = coord;
auto curr = Coord{x, y};
if (x + 1 < 3) {
auto dest = Coord{x + 1, y};
ret.emplace_back(curr, dest);
}
if (y + 1 < 3) { …Run Code Online (Sandbox Code Playgroud) 我正在使用 Android Studio 开发 Android 应用程序,几乎每当我尝试检查变量时,调试器都会卡在“评估”上。
我怀疑这是在尝试调试后台任务时发生的(这也是无意义的),但事实是现在我正在尝试调试和检查主线程中的变量,所以现在是我被卡住了。
我尝试了 Stack Overflow 上找到的一些解决方案,但没有成功,如下所示:
正如帖子所建议的那样,我刚刚在设置中禁用了“启用集合类的替代视图”,但什么也没发生。
我怎样才能恢复正确调试和检查变量的能力?
我正在尝试按照日志文档来实现记录器。我有以下代码:
记录器.rs
use std::sync::OnceLock;
static LOGGER: OnceLock<Logger> = OnceLock::new();
struct Logger {
level: log::Level,
}
pub fn init(level: log::Level) {
if let Ok(_) = LOGGER.set(Logger { level }) {
log::set_logger(LOGGER.get().unwrap()).unwrap();
log::set_max_level(level.to_level_filter());
}
}
impl log::Log for Logger {
fn enabled(&self, metadata: &log::Metadata) -> bool {
metadata.level() <= self.level
}
fn log(&self, record: &log::Record) {
if self.enabled(record.metadata()) {
eprintln!("{}: {}", record.level(), record.args());
}
}
fn flush(&self) {}
}
Run Code Online (Sandbox Code Playgroud)
库文件
use log::info;
mod logger;
pub fn run(loglevel: log::Level) {
logger::init(loglevel); …Run Code Online (Sandbox Code Playgroud)