我或多或少地遵循这个示例,使用我自己的数据集将光线调整超参数库与 Huggingface 变压器库集成。
这是我的脚本:
import ray
from ray import tune
from ray.tune import CLIReporter
from ray.tune.examples.pbt_transformers.utils import download_data, \
build_compute_metrics_fn
from ray.tune.schedulers import PopulationBasedTraining
from transformers import glue_tasks_num_labels, AutoConfig, \
AutoModelForSequenceClassification, AutoTokenizer, Trainer, TrainingArguments
def get_model():
# tokenizer = AutoTokenizer.from_pretrained(model_name, additional_special_tokens = ['[CHARACTER]'])
model = ElectraForSequenceClassification.from_pretrained('google/electra-small-discriminator', num_labels=2)
model.resize_token_embeddings(len(tokenizer))
return model
from sklearn.metrics import accuracy_score, precision_recall_fscore_support
def compute_metrics(pred):
labels = pred.label_ids
preds = pred.predictions.argmax(-1)
precision, recall, f1, _ = precision_recall_fscore_support(labels, preds, average='weighted')
acc = accuracy_score(labels, preds)
return {
'accuracy': …Run Code Online (Sandbox Code Playgroud) 我正在使用 Ray & RLlib 在 Ubuntu 系统上训练 RL 代理。Tensorboard 用于通过将其指向~/ray_results所有运行的所有日志文件的存储位置来监控训练进度。未使用 Ray Tune。
例如,在开始新的 Ray/RLlib 训练运行时,将在以下位置创建一个新目录
~/ray_results/DQN_ray_custom_env_2020-06-07_05-26-32djwxfdu1
Run Code Online (Sandbox Code Playgroud)
为了可视化训练进度,我们需要使用以下命令启动 Tensorboard
tensorboard --logdir=~/ray_results
Run Code Online (Sandbox Code Playgroud)
问题:是否可以配置 Ray/RLlib 以将日志文件的输出目录从~/ray_results其他位置更改?
另外,不是登录到一个名为类似的目录DQN_ray_custom_env_2020-06-07_05-26-32djwxfdu1,这个目录名称可以由我们自己设置吗?
尝试失败:尝试设置
os.environ['TUNE_RESULT_DIR'] = '~/another_dir`
Run Code Online (Sandbox Code Playgroud)
在运行之前ray.init(),但结果日志文件仍在写入~/ray_results。
所以我刚刚进行了一个tune实验并得到了以下输出:
+--------------------+------------+-------+-------------+----------------+--------+------------+
| Trial name | status | loc | lr | weight_decay | loss | accuracy |
|--------------------+------------+-------+-------------+----------------+--------+------------|
| trainable_13720f86 | TERMINATED | | 0.00116961 | 0.00371219 | 0.673 | 0.7977 |
| trainable_13792744 | TERMINATED | | 0.109529 | 0.0862344 | 0.373 | 0.8427 |
| trainable_137ecd98 | TERMINATED | | 4.35062e-06 | 0.0261442 | 0.6993 | 0.7837 |
| trainable_1383f9d0 | TERMINATED | | 1.37858e-05 | 0.0974182 | 0.4538 | 0.8428 |
| trainable_13892f72 | …Run Code Online (Sandbox Code Playgroud) 我正在使用射线调整调整超参数。该模型是在tensorflow库中构建的,它占用了很大一部分可用的GPU内存。我注意到每秒一次的调用都会报告内存不足的错误。看起来内存正在被释放,您可以在 GPU 内存使用图表中看到,这是连续试验的调用之间的时刻,在这之间发生了 OOM 错误。我补充说,在较小的模型上我不会遇到此错误,并且图表看起来相同。
如何处理每次第二次尝试时出现的内存不足错误?
