diff --git a/nbs/01_detection_using_adapter_ft copy.ipynb b/nbs/01_detection_using_adapter_ft copy.ipynb new file mode 100644 index 0000000..129f409 --- /dev/null +++ b/nbs/01_detection_using_adapter_ft copy.ipynb @@ -0,0 +1,7167 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "https://github.com/huggingface/peft/blob/main/examples/fp4_finetuning/finetune_fp4_opt_bnb_peft.py" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], + "source": [ + "from torch import optim\n", + "import lightning as pl\n", + "from matplotlib import pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "import torch\n", + "import torch.nn as nn\n", + "import transformers\n", + "from datasets import load_dataset\n", + "from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig, AutoConfig\n", + "import numpy as np\n", + "from tqdm.auto import tqdm\n", + "import pandas as pd\n", + "import warnings\n", + "from peft import LoraConfig, get_peft_model, IA3Config" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "plt.style.use('seaborn-v0')\n", + "torch.set_float32_matmul_precision('medium')\n", + "warnings.filterwarnings(\"ignore\", \".*does not have many workers.*\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"0\"\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# model_name = \"TheBloke/phi-2-GPTQ\"\n", + "model_name = \"microsoft/phi-2\"\n", + "\n", + "def load_model():\n", + "\n", + " model = AutoModelForCausalLM.from_pretrained(\n", + " model_name,\n", + " # quantization_config=BitsAndBytesConfig(\n", + " # load_in_4bit=True,\n", + " # llm_int8_threshold=6.0,\n", + " # llm_int8_has_fp16_weight=False,\n", + " # bnb_4bit_compute_dtype=torch.float16,\n", + " # bnb_4bit_use_double_quant=True,\n", + " # bnb_4bit_quant_type=\"nf4\",\n", + " # ),\n", + " torch_dtype=torch.float16,\n", + " trust_remote_code=True,\n", + " )\n", + "\n", + "\n", + " # config = AutoConfig.from_pretrained(model_name, trust_remote_code=True,)\n", + " # config.quantization_config['use_exllama'] = False\n", + " # config.quantization_config['disable_exllama'] = True\n", + " # model = AutoModelForCausalLM.from_pretrained(\n", + " # model_name,\n", + " # torch_dtype=torch.bfloat16,\n", + " # trust_remote_code=True,\n", + " # config=config,\n", + " # )\n", + " return model\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Loading checkpoint shards: 100%|██████████| 2/2 [00:01<00:00, 1.48it/s]\n", + "Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.\n" + ] + } + ], + "source": [ + "base_model = load_model()\n", + "tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True,)\n", + "tokenizer.pad_token = tokenizer.eos_token" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def reset_model(base_model):\n", + " # peft_config = LoraConfig(\n", + " # # task_type=TaskType.TOKEN_CLS, \n", + " # target_modules=[ \"fc2\", \"Wqkv\",],\n", + " # inference_mode=False, r=4, lora_alpha=4, \n", + " # # lora_dropout=0.1, \n", + " # # bias=\"all\"\n", + " # )\n", + " peft_config = IA3Config(\n", + " target_modules=[ \"fc2\", \"Wqkv\", 'out_proj', 'fc1'], \n", + " feedforward_modules=[\"fc2\", 'fc1', 'out_proj'],\n", + " inference_mode=False,\n", + " )\n", + " model = get_peft_model(base_model, peft_config)\n", + " model.config.use_cache = False\n", + " return model\n", + "\n", + "model = reset_model(base_model)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[PosixPath('../samples/bletchley_decleration.md'), PosixPath('../samples/cicero_fin1.md'), PosixPath('../samples/disney_appointment.md'), PosixPath('../samples/fake_paper.md'), PosixPath('../samples/fauci_emails.md'), PosixPath('../samples/harvard_announcement_reminders.md'), PosixPath('../samples/how_to_catch_a_liar.md'), PosixPath('../samples/lk-99_end.md'), PosixPath('../samples/lk-99_espanol.md'), PosixPath('../samples/lorem_ipsum.md'), PosixPath('../samples/openai_board_ann.md'), PosixPath('../samples/openai_paper_weak_to_strong.md'), PosixPath('../samples/politics_is_the_mind_killer.md'), PosixPath('../samples/statement_vyKamala_on_passing_of_johnson.md'), PosixPath('../samples/survey_of_rumours.md')]\n" + ] + }, + { + "data": { + "text/plain": [ + "dict_keys(['f', 'title', 'url', 'content'])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "MAX_LEN = 400\n", + "\n", + "import frontmatter\n", + "from pathlib import Path\n", + "sample_files = sorted(Path(\"../samples/\").glob('*.md'))\n", + "print(sample_files)\n", + "samples = [{'f':f, **frontmatter.load(f).to_dict()} for f in sample_files]\n", + "\n", + "for sample in samples:\n", + " assert 'title' in sample, sample['f']\n", + " assert 'content' in sample\n", + "samples[0].keys()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Helpers" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# modified from https://github.dev/huggingface/evaluate/blob/8dfe05784099fb9af55b8e77793205a3b7c86465/measurements/perplexity/perplexity.py#L154\n", + "import evaluate\n", + "from evaluate import logging\n", + "from torch.nn import CrossEntropyLoss\n", + "from torch.utils.data import DataLoader\n", + "\n", + "def perplexity_compute(\n", + " ds, model, tokenizer, batch_size: int = 16, add_start_token: bool = True, device=None, max_length=None\n", + "):\n", + " model = model.to(device)\n", + "\n", + "\n", + " ds = ds.with_format('pt')\n", + " dl = DataLoader(ds, batch_size=1, shuffle=False, num_workers=0, collate_fn=tokenizer.pad, pin_memory=True)\n", + " ppls = []\n", + " loss_fct = CrossEntropyLoss(reduction=\"none\")\n", + " for b in dl:\n", + " input_ids = b['input_ids'].to(device)\n", + " attention_mask = b['attention_mask'].to(device)\n", + " print(attention_mask)\n", + "\n", + " labels = input_ids\n", + "\n", + " with torch.no_grad():\n", + " out_logits = model(input_ids=input_ids, attention_mask=attention_mask).logits\n", + "\n", + " shift_logits = out_logits[..., :-1, :].contiguous()\n", + " shift_labels = labels[..., 1:].contiguous()\n", + " shift_attention_mask_batch = attention_mask[..., 1:].contiguous()\n", + "\n", + " perplexity_batch = torch.exp(\n", + " (loss_fct(shift_logits.transpose(1, 2), shift_labels) * shift_attention_mask_batch).sum(1)\n", + " / shift_attention_mask_batch.sum(1)\n", + " )\n", + "\n", + " ppls += perplexity_batch.tolist()\n", + "\n", + " return {\"perplexities\": ppls, \"mean_perplexity\": torch.tensor(ppls).mean()}" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# perplexity_compute(ds=ds_val, model=model, tokenizer=tokenizer, device='cuda')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Training" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "from torch.nn import functional as F\n", + "from torch.utils.data import DataLoader, TensorDataset\n", + "from datasets import Dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lightning helpers" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def eval(model, tokenizer, ds_val: Dataset):\n", + " model.eval();\n", + " with torch.no_grad():\n", + " with model.disable_adapter():\n", + " results = perplexity_compute(ds=ds_val, model=model, tokenizer=tokenizer, device='cuda')\n", + " results2 = perplexity_compute(ds=ds_val, model=model, tokenizer=tokenizer, device='cuda')\n", + " return dict(before=results['mean_perplexity'].item(), after=results2['mean_perplexity'].item())\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Train" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "from datasets import Dataset\n", + "\n", + "\n", + "def compute_metrics(eval_prediction):\n", + " return {}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Trainer docs\n", + "\n", + "- https://huggingface.co/docs/transformers/v4.36.1/en/main_classes/trainer#transformers.Trainer" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(400, 14201)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "MAX_LEN, len(sample['content'])//3" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "def tokenize_and_split(examples):\n", + " l = len(tokenizer(examples).input_ids[0])\n", + " max_len = min(l//3, MAX_LEN) # break into at least 5\n", + " max_len = max(max_len, 10)\n", + "\n", + "\n", + " result = tokenizer(\n", + " examples,\n", + " # add_special_tokens=False,\n", + " truncation=True,\n", + " stride=2,\n", + " max_length=max_len,\n", + " return_overflowing_tokens=True,\n", + " return_attention_mask=True,\n", + " # return_tensors=\"pt\",\n", + " )\n", + " return result\n", + "\n", + "# s = sample['content']\n", + "# first_half = s[:len(s)//2]\n", + "# second_half = s[len(s)//2:]\n", + "# ds_train = Dataset.from_dict(tokenize_and_split([first_half]))\n", + "# ds_val = Dataset.from_dict(tokenize_and_split([second_half]))\n", + "# ds_train" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Token indices sequence length is longer than the specified maximum sequence length for this model (8172 > 2048). Running this sequence through the model will result in indexing errors\n" + ] + } + ], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "s = sample['content']\n", + "\n", + "d = Dataset.from_dict(tokenize_and_split([s]))\n", + "d2 = d.train_test_split(test_size=0.5, seed=42)\n", + "ds_train = d2['train']\n", + "ds_val = d2['test']" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "os.environ['CUDA_VISIBLE_DEVICES']=\"1\"" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def learn_sample(sample):\n", + " # device = 'cuda'\n", + " # lr = 4e-3\n", + " # epochs = 3\n", + " # accum_steps = 1\n", + " batch_size = 1\n", + " verbose = False\n", + "\n", + " s = sample['content']\n", + "\n", + " d = Dataset.from_dict(tokenize_and_split([s]))\n", + " d2 = d.train_test_split(test_size=0.5, seed=42)\n", + " ds_train = d2['train']\n", + " ds_val = d2['test']\n", + "\n", + " \n", + " model = reset_model(base_model)\n", + " # eval(model, tokenizer, ds_train)\n", + "\n", + " # https://huggingface.co/docs/transformers/v4.36.1/en/main_classes/trainer#transformers.Trainer\n", + " trainer = transformers.Trainer(\n", + " model=model,\n", + " train_dataset=ds_train,\n", + " eval_dataset=ds_val,\n", + " compute_metrics=compute_metrics, # without this it wont even give val loss\n", + " args=transformers.TrainingArguments(\n", + " # checkpoint='epoch',\n", + " save_strategy='epoch',\n", + " label_names=['labels',],\n", + " per_device_train_batch_size=batch_size,\n", + " gradient_accumulation_steps=3,\n", + " warmup_steps=6,\n", + " max_steps=20,\n", + " learning_rate=3e-3,\n", + " fp16=True,\n", + " logging_steps=1,\n", + " output_dir=\"outputs\",\n", + " log_level='error',\n", + " # do_eval=True,\n", + " evaluation_strategy=\"epoch\",\n", + " eval_steps=1,\n", + " load_best_model_at_end=True,\n", + " \n", + " # disable_tqdm=not verbose,\n", + " ),\n", + " data_collator=transformers.DataCollatorForLanguageModeling(tokenizer, mlm=False),\n", + " )\n", + " trainer._signature_columns = ['input_ids', 'attention_mask', 'labels',]\n", + " model.config.use_cache = False # silence the warnings. Please re-enable for inference!\n", + " train_output = trainer.train()\n", + "\n", + " df_hist = pd.DataFrame(trainer.state.log_history)\n", + " df_hist_epoch = df_hist.groupby('epoch').last().drop(columns=['step'])\n", + " df_hist_step = df_hist.set_index('step').dropna(thresh=2, axis=1)\n", + " if verbose:\n", + " df_hist_epoch['loss'].plot()\n", + " plt.twinx()\n", + " df_hist_epoch['eval_loss'].plot(c='b', label='eval')\n", + " plt.legend()\n", + " plt.show()\n", + "\n", + "\n", + " result_train = {f'train/{k}':v for k,v in eval(model, tokenizer, ds_train).items()}\n", + " result = eval(model, tokenizer, ds_val)\n", + " result['hist'] = df_hist_epoch\n", + " result.update(result_train)\n", + " return result\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/nn/parallel/data_parallel.py:33: UserWarning: \n", + " There is an imbalance between your GPUs. You may want to exclude GPU 1 which\n", + " has less than 75% of the memory or cores of GPU 0. You can do so by setting\n", + " the device_ids argument to DataParallel, or by setting the CUDA_VISIBLE_DEVICES\n", + " environment variable.\n", + " warnings.warn(imbalance_warn.format(device_ids[min_pos], device_ids[max_pos]))\n", + " 0%| | 0/20 [00:00 3\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43mlearn_sample\u001b[49m\u001b[43m(\u001b[49m\u001b[43msample\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28mprint\u001b[39m(sample[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtitle\u001b[39m\u001b[38;5;124m'\u001b[39m])\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;28mdict\u001b[39m(before\u001b[38;5;241m=\u001b[39mr[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mbefore\u001b[39m\u001b[38;5;124m'\u001b[39m], after\u001b[38;5;241m=\u001b[39mr[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mafter\u001b[39m\u001b[38;5;124m'\u001b[39m]))\n", + "Cell \u001b[0;32mIn[18], line 50\u001b[0m, in \u001b[0;36mlearn_sample\u001b[0;34m(sample)\u001b[0m\n\u001b[1;32m 48\u001b[0m trainer\u001b[38;5;241m.\u001b[39m_signature_columns \u001b[38;5;241m=\u001b[39m [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124minput_ids\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mattention_mask\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlabels\u001b[39m\u001b[38;5;124m'\u001b[39m,]\n\u001b[1;32m 49\u001b[0m model\u001b[38;5;241m.\u001b[39mconfig\u001b[38;5;241m.\u001b[39muse_cache \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m \u001b[38;5;66;03m# silence the warnings. Please re-enable for inference!\u001b[39;00m\n\u001b[0;32m---> 50\u001b[0m train_output \u001b[38;5;241m=\u001b[39m \u001b[43mtrainer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtrain\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 52\u001b[0m df_hist \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mDataFrame(trainer\u001b[38;5;241m.\u001b[39mstate\u001b[38;5;241m.\u001b[39mlog_history)\n\u001b[1;32m 53\u001b[0m df_hist_epoch \u001b[38;5;241m=\u001b[39m df_hist\u001b[38;5;241m.\u001b[39mgroupby(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mepoch\u001b[39m\u001b[38;5;124m'\u001b[39m)\u001b[38;5;241m.\u001b[39mlast()\u001b[38;5;241m.\u001b[39mdrop(columns\u001b[38;5;241m=\u001b[39m[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mstep\u001b[39m\u001b[38;5;124m'\u001b[39m])\n", + "File \u001b[0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/transformers/trainer.py:1591\u001b[0m, in \u001b[0;36mTrainer.train\u001b[0;34m(self, resume_from_checkpoint, trial, ignore_keys_for_eval, **kwargs)\u001b[0m\n\u001b[1;32m 1589\u001b[0m hf_hub_utils\u001b[38;5;241m.\u001b[39menable_progress_bars()\n\u001b[1;32m 1590\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m-> 1591\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43minner_training_loop\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1592\u001b[0m \u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1593\u001b[0m \u001b[43m \u001b[49m\u001b[43mresume_from_checkpoint\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mresume_from_checkpoint\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1594\u001b[0m \u001b[43m \u001b[49m\u001b[43mtrial\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtrial\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1595\u001b[0m \u001b[43m \u001b[49m\u001b[43mignore_keys_for_eval\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mignore_keys_for_eval\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1596\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/transformers/trainer.py:1892\u001b[0m, in \u001b[0;36mTrainer._inner_training_loop\u001b[0;34m(self, batch_size, args, resume_from_checkpoint, trial, ignore_keys_for_eval)\u001b[0m\n\u001b[1;32m 1889\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcontrol \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcallback_handler\u001b[38;5;241m.\u001b[39mon_step_begin(args, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstate, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcontrol)\n\u001b[1;32m 1891\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maccelerator\u001b[38;5;241m.\u001b[39maccumulate(model):\n\u001b[0;32m-> 1892\u001b[0m tr_loss_step \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtraining_step\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minputs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1894\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\n\u001b[1;32m 1895\u001b[0m args\u001b[38;5;241m.\u001b[39mlogging_nan_inf_filter\n\u001b[1;32m 1896\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m is_torch_tpu_available()\n\u001b[1;32m 1897\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m (torch\u001b[38;5;241m.\u001b[39misnan(tr_loss_step) \u001b[38;5;129;01mor\u001b[39;00m torch\u001b[38;5;241m.\u001b[39misinf(tr_loss_step))\n\u001b[1;32m 1898\u001b[0m ):\n\u001b[1;32m 1899\u001b[0m \u001b[38;5;66;03m# if loss is nan or inf simply add the average of previous logged losses\u001b[39;00m\n\u001b[1;32m 1900\u001b[0m tr_loss \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m tr_loss \u001b[38;5;241m/\u001b[39m (\u001b[38;5;241m1\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstate\u001b[38;5;241m.\u001b[39mglobal_step \u001b[38;5;241m-\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_globalstep_last_logged)\n", + "File \u001b[0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/transformers/trainer.py:2787\u001b[0m, in \u001b[0;36mTrainer.training_step\u001b[0;34m(self, model, inputs)\u001b[0m\n\u001b[1;32m 2785\u001b[0m scaled_loss\u001b[38;5;241m.\u001b[39mbackward()\n\u001b[1;32m 2786\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m-> 2787\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43maccelerator\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbackward\u001b[49m\u001b[43m(\u001b[49m\u001b[43mloss\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2789\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m loss\u001b[38;5;241m.\u001b[39mdetach() \u001b[38;5;241m/\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39margs\u001b[38;5;241m.\u001b[39mgradient_accumulation_steps\n", + "File \u001b[0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/accelerate/accelerator.py:1903\u001b[0m, in \u001b[0;36mAccelerator.backward\u001b[0;34m(self, loss, **kwargs)\u001b[0m\n\u001b[1;32m 1901\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 1902\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mscaler \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1903\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mscaler\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mscale\u001b[49m\u001b[43m(\u001b[49m\u001b[43mloss\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbackward\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1904\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1905\u001b[0m loss\u001b[38;5;241m.\u001b[39mbackward(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/_tensor.py:492\u001b[0m, in \u001b[0;36mTensor.backward\u001b[0;34m(self, gradient, retain_graph, create_graph, inputs)\u001b[0m\n\u001b[1;32m 482\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m has_torch_function_unary(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 483\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m handle_torch_function(\n\u001b[1;32m 484\u001b[0m Tensor\u001b[38;5;241m.\u001b[39mbackward,\n\u001b[1;32m 485\u001b[0m (\u001b[38;5;28mself\u001b[39m,),\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 490\u001b[0m inputs\u001b[38;5;241m=\u001b[39minputs,\n\u001b[1;32m 491\u001b[0m )\n\u001b[0;32m--> 492\u001b[0m \u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mautograd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbackward\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 493\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgradient\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mretain_graph\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcreate_graph\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minputs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minputs\u001b[49m\n\u001b[1;32m 494\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/torch/autograd/__init__.py:251\u001b[0m, in \u001b[0;36mbackward\u001b[0;34m(tensors, grad_tensors, retain_graph, create_graph, grad_variables, inputs)\u001b[0m\n\u001b[1;32m 246\u001b[0m retain_graph \u001b[38;5;241m=\u001b[39m create_graph\n\u001b[1;32m 248\u001b[0m \u001b[38;5;66;03m# The reason we repeat the same comment below is that\u001b[39;00m\n\u001b[1;32m 249\u001b[0m \u001b[38;5;66;03m# some Python versions print out the first line of a multi-line function\u001b[39;00m\n\u001b[1;32m 250\u001b[0m \u001b[38;5;66;03m# calls in the traceback and some print out the last line\u001b[39;00m\n\u001b[0;32m--> 251\u001b[0m \u001b[43mVariable\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_execution_engine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_backward\u001b[49m\u001b[43m(\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# Calls into the C++ engine to run the backward pass\u001b[39;49;00m\n\u001b[1;32m 252\u001b[0m \u001b[43m \u001b[49m\u001b[43mtensors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 253\u001b[0m \u001b[43m \u001b[49m\u001b[43mgrad_tensors_\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 254\u001b[0m \u001b[43m \u001b[49m\u001b[43mretain_graph\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 255\u001b[0m \u001b[43m \u001b[49m\u001b[43mcreate_graph\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 256\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 257\u001b[0m \u001b[43m \u001b[49m\u001b[43mallow_unreachable\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 258\u001b[0m \u001b[43m \u001b[49m\u001b[43maccumulate_grad\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 259\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "data = []\n", + "for sample in samples:\n", + " r = learn_sample(sample)\n", + " print(sample['title'])\n", + " print(dict(before=r['before'], after=r['after']))\n", + " data.append(dict(**r, **sample))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# example training\n", + "df_hist = data[-1]['hist']#.groupby('epoch').last().dropna(axis=1).drop(columns=['step'])\n", + "df_hist['loss'].plot(label='train')\n", + "plt.twinx()\n", + "df_hist['eval_loss'].plot(c='b', label='eval')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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kUBReREREZFAUXkRERGRQFF5ERERkUBReREREZFAUXkRERGRQFF5ERERkUCJdR2guGRkZDBhwgRq167NHXfc4TqOiIiIlJCIKS/p6emkp6e7jiEiIiIlTJeNREREJFBUXkRERCRQVF5EREQkUFReREREJFBUXkRERCRQIma10R/Fxkbs0PYRLePcK5rGq7FGpmgaK0TXeMNhrDa5Av5xx0ONOsTExZXYzymJsRblOY211hZ7AhEREZESostGAbVjxw7uueceduzY4TpKqYim8WqskSmaxgrRNV6NtfSpvASUtZYVK1YQLSfOomm8GmtkiqaxQnSNV2MtfSovIiIiEigqLyIiIhIoKi8BFRcXx8UXX0xcCc4mDyfRNF6NNTJF01ghusarsZY+rTYSERGRQNGZFxEREQkUlRcREREJFJUXERERCRSVFxEREQkU9xsxyH4+/PBDpk+fztq1a4mPj6dJkyb06dOHmjVrHvR7pk6dyssvv7zP5+Li4nj33XdLOu4xGzlyJKNGjdrnczVr1uS555476Pd8++23vP/++2RlZZGamsrll19Ou3btSjjpsevfvz9ZWVn7fb5Hjx707dt3v88H6bguXLiQMWPGsGLFCrZs2cKdd95J+/btC79urWXkyJFMmjSJ3NxcmjZtSt++falRo8YhnzcjI4OxY8eSnZ1NvXr1uOaaa2jUqFFJD+ewDjXe/Px8RowYwaxZs9iwYQOJiYm0atWK3r17U6lSpYM+59G8FkrD4Y7tSy+9xBdffLHP97Rp04Z77733kM8bjsf2cGO95JJLDvh9ffr04dxzzz3g18L1uB7Je83u3bsZPnw406ZNY8+ePbRp04a+ffuSkpJy0Oc92td6Uai8hKGFCxfSs2dPjjvuOAoKCnjvvfd45JFHeOaZZyhTpsxBv69s2bI8//zzpZi0+NSpU4f777+/8GPPO/hJwSVLlvD888/Tu3dv2rVrx9dff81TTz3FE088Qd26dUsj7lF77LHH8H2/8OPVq1fzyCOPcPLJJx/0e4JyXHft2kX9+vXp1q0bTz/99H5f//jjj/n000/p378/1apV4/3332fIkCE888wzxMfHH/A5p02bxvDhw+nXrx+NGzdm/PjxDBkyhOeee44KFSqU9JAO6VDj3b17NytWrOCiiy6ifv36bN++nTfffJMnn3ySxx9//JDPW5TX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cNddd4X9PV72mjdvHhs3bixcIvp7QT6uP/30E4MHDy78ePjw4QCcfvrp9O/fn/POO49du3bx6quvkpeXR9OmTRk4cOA+8wXWr19PTk5O4cedOnUiJyeHkSNHkp2dTf369Rk4cKDz31jh0OP985//zP/+9z8A7r777n2+74EHHqBFixbA/uM93GvBlUONtV+/fqxevZovvviC3NxcKlWqROvWrfnLX/5CXFxc4fcE5dge7u8xhO5RY609aPkIynE9kveaq666CmMMQ4cOJT8/v/Amdb+3bt26wpVKwBG91o+VsdbaYns2ERERkRKmOS8iIiISKCovIiIiEigqLyIiIhIoKi8iIiISKCovIiIiEigqLyIiIhIoKi8iIiISKCovIiIiEigqLyISVUaOHMkll1yyzx1QRSRYVF5EREQkUFReREREJFBUXkRERCRQtKu0iJSIzZs3M2LECGbNmkVubi6pqan06tWLbt26AbBgwQIGDx7MbbfdxsqVK5kyZQo7d+6kZcuWXHvttVSpUmWf5/v222/56KOPWLNmDWXKlKFNmzb06dOHSpUq7fO4tWvX8v7777NgwQJ27txJlSpV6NixI5dddtk+j8vLy+Ptt99mxowZWGvp0KED1157LQkJCSX7H0ZEjpnKi4gUu+zsbO69914AevbsSfny5Zk9ezavvPIKO3bs4Jxzzil87OjRozHGcN5555GTk8P48eN5+OGHeeqpp4iPjwdg6tSpvPzyyxx33HH07t2brVu38sknn7BkyRKefPJJypUrB8CqVasYNGgQsbGxdO/enWrVqpGZmckPP/ywX3l59tlnqVq1Kr1792b58uVMnjyZ8uXL06dPn1L6ryQiR0vlRUSK3YgRI/B9n6effprk5GQAevTowXPPPcf//d//ceaZZxY+dvv27Tz77LOULVsWgAYNGvDss88yceJEzj77bPLz83n33XepU6cOgwcPLiw0TZs25fHHH2f8+PFccsklALzxxhsAPPHEE/ucubn88sv3y1i/fn1uvPHGfXJMmTJF5UUkADTnRUSKlbWW77//nhNOOAFrLTk5OYX/S0tLIy8vj+XLlxc+/rTTTissLgAdO3akYsWKzJo1C4Dly5ezdetWevbsWVhcANq1a0etWrWYOXMmADk5OSxatIiuXbvud8nJGLNfzt8XKAiVoW3btpGXl3fs/xFEpETpzIuIFKucnBxyc3OZOHEiEydOPOhj9l7qqVGjxj5fM8aQmppKVlYWQOH/16xZc7/nqVmzJosXLwZg/fr1ANSpU+eIcv6x4CQlJQGQm5tLYmLiET2HiLih8iIixcpaC0Dnzp05/fTTD/iYevXqsWbNmtKMtR/PO/CJ5735RSR8qbyISLEqX748ZcuWxfd9WrdufdDH7S0vv/zyyz6ft9aSmZlJ3bp1AahatSoA69ato2XLlvs8dt26dYVfr169OgA///xz8QxERMKW5ryISLHyPI8OHTrw/fffs3r16v2+/sfb8n/55Zfs2LGj8OPvvvuOLVu20LZtWwAaNmxIhQoV+Pzzz9mzZ0/h42bNmsXatWtp164dECpNzZo1Y8qUKWzcuHGfn6GzKSKRRWdeRKTY9e7dmwULFnDvvffSvXt3ateuzfbt21m+fDnz5s3jP//5T+Fjk5KSGDRoEF26dGHr1q2MHz+e1NRUunfvDkBsbCyXX345L7/8Mg8++CCnnHIK2dnZfPrpp1StWnWfZddXX301gwYN4p577ilcKp2VlcXMmTN56qmnSv2/g4iUDJUXESl2KSkpPProo4waNYrvv/+eCRMmkJycTJ06dfZbtnzBBRewatUqPvroI3bs2EGrVq3o27fvPjeL69KlC/Hx8Xz88ce8++67JCQkcNJJJ9GnT5/Cib8QWv48ZMgQ3n//fT7//HN2795N1apVOfnkk0tt7CJS8ozV+VQRcWDvHXZvv/12Onbs6DqOiASI5ryIiIhIoKi8iIiISKCovIiIiEigaM6LiIiIBIrOvIiIiEigqLyIiIhIoKi8iIiISKCovIiIiEigqLyIiIhIoKi8iIiISKCovIiIiEigqLyIiIhIoPw/fg4kuyKNvNEAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df_hist['learning_rate'].plot(logy=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Perplexity\n", + "\n", + "Perplexity measures how well a language model predicts a text sample. Lower is better\n", + "\n", + "It’s calculated as the average number of bits per word a model needs to represent the same\n", + "\n", + "https://huggingface.co/docs/transformers/perplexity\n", + "https://thegradient.pub/understanding-evaluation-metrics-for-language-models/\n", + "\n", + "The **improvement** column, is perplexity decrease" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
beforeafterlenimprovement%improvementnovellearnableBS
title
How to Catch an AI Liar28.92747923.91235054640.1733695.015129TrueTrueFalse
ibois, Philippe (2012-06-03).72.71493563.473969137070.1270859.240967TrueTrueFalse
buzzfeed foi fauci emails 202323.32009320.782446136400.1088182.537647TrueTrueFalse
disney appointment118.502907110.34452836530.0688458.158379TrueTrueFalse
blechley declaration17.86233916.78616077620.0602491.076180TrueTrueFalse
fake ai hoax paper7.7480847.47369032900.0354140.274394FalseTrueTrue
harvard announcment caplain israel hamas45.43665744.63360242470.0176740.803055TrueFalseTrue
\n", + "
" + ], + "text/plain": [ + " before after len \\\n", + "title \n", + "How to Catch an AI Liar 28.927479 23.912350 5464 \n", + "ibois, Philippe (2012-06-03). 72.714935 63.473969 13707 \n", + "buzzfeed foi fauci emails 2023 23.320093 20.782446 13640 \n", + "disney appointment 118.502907 110.344528 3653 \n", + "blechley declaration 17.862339 16.786160 7762 \n", + "fake ai hoax paper 7.748084 7.473690 3290 \n", + "harvard announcment caplain israel hamas 45.436657 44.633602 4247 \n", + "\n", + " improvement% improvement novel \\\n", + "title \n", + "How to Catch an AI Liar 0.173369 5.015129 True \n", + "ibois, Philippe (2012-06-03). 0.127085 9.240967 True \n", + "buzzfeed foi fauci emails 2023 0.108818 2.537647 True \n", + "disney appointment 0.068845 8.158379 True \n", + "blechley declaration 0.060249 1.076180 True \n", + "fake ai hoax paper 0.035414 0.274394 False \n", + "harvard announcment caplain israel hamas 0.017674 0.803055 True \n", + "\n", + " learnable BS \n", + "title \n", + "How to Catch an AI Liar True False \n", + "ibois, Philippe (2012-06-03). True False \n", + "buzzfeed foi fauci emails 2023 True False \n", + "disney appointment True False \n", + "blechley declaration True False \n", + "fake ai hoax paper True True \n", + "harvard announcment caplain israel hamas False True " + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_res = pd.DataFrame(data)\n", + "df_res['len'] = df_res.content.str.len()\n", + "df_res = df_res[['before', 'after', 'title', 'len']].set_index('title')\n", + "df_res['improvement%'] = (df_res['before'] - df_res['after'])/ df_res['before']\n", + "df_res['improvement'] = (df_res['before'] - df_res['after'])\n", + "df_res['novel'] = df_res['before'] > 15\n", + "df_res['learnable'] = df_res['improvement%'] > 0.02\n", + "\n", + "# We can measure the final score using learnable * novel\n", + "# df_res['BS'] = ~df_res['learnable'] | ~df_res['novel']\n", + "# Or just absolute perplexity improvement\n", + "df_res['BS'] = df_res['improvement'] < 1\n", + "df_res = df_res.sort_values('improvement', ascending=False)\n", + "df_res" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "| title | before | after | len | improvement% | improvement | novel | learnable | BS |\n", + "|:-----------------------------------------|----------:|----------:|------:|---------------:|--------------:|:--------|:------------|:------|\n", + "| How to Catch an AI Liar | 28.9275 | 23.9123 | 5464 | 0.173369 | 5.01513 | True | True | False |\n", + "| ibois, Philippe (2012-06-03). | 72.7149 | 63.474 | 13707 | 0.127085 | 9.24097 | True | True | False |\n", + "| buzzfeed foi fauci emails 2023 | 23.3201 | 20.7824 | 13640 | 0.108818 | 2.53765 | True | True | False |\n", + "| disney appointment | 118.503 | 110.345 | 3653 | 0.0688454 | 8.15838 | True | True | False |\n", + "| blechley declaration | 17.8623 | 16.7862 | 7762 | 0.0602485 | 1.07618 | True | True | False |\n", + "| fake ai hoax paper | 7.74808 | 7.47369 | 3290 | 0.0354144 | 0.274394 | False | True | True |\n", + "| harvard announcment caplain israel hamas | 45.4367 | 44.6336 | 4247 | 0.0176742 | 0.803055 | True | False | True |\n" + ] + } + ], + "source": [ + "print(df_res.to_markdown())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# DEBUG" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import display, HTML, Markdown\n", + "import torch\n", + "\n", + "@torch.no_grad()\n", + "def gen(model, inputs, tokenizer, clean=True):\n", + " s = model.generate(\n", + " input_ids=inputs[\"input_ids\"][None, :].to(model.device),\n", + " attention_mask=inputs[\"attention_mask\"][None, :].to(model.device),\n", + " use_cache=False,\n", + " max_new_tokens=100,\n", + " min_new_tokens=100,\n", + " do_sample=False,\n", + " early_stopping=False,\n", + " )\n", + " input_l = inputs[\"input_ids\"].shape[0]\n", + " tokenizer_kwargs=dict(clean_up_tokenization_spaces=clean, skip_special_tokens=clean)\n", + " old = tokenizer.decode(\n", + " s[0, :input_l][-100:], **tokenizer_kwargs\n", + " )\n", + " new = tokenizer.decode(\n", + " s[0, input_l:], **tokenizer_kwargs\n", + " )\n", + " s_old = \"\"+old.replace('\\n', '
')\n", + " s_new = '' + new.replace('\\n', '
')+ '

'\n", + " # print(s_old, s_new)\n", + " display(HTML(f\"{s_old}{s_new}\"))\n", + " # print([old, new])\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "sample = samples[-1]\n", + "s = sample['content']\n", + "first_half = s[:len(s)//2]\n", + "second_half = s[len(s)//2:]\n", + "ds_train = Dataset.from_dict(tokenizer([first_half]))\n", + "ds_val = Dataset.from_dict(tokenizer([second_half]))" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 95, 96, 97]. This is achieved through model parallelism across specialized experts, allowing the training of models with trillions of parameters, and its specialization in handling diverse data distributions enhances its capability in few-shot learning and other complex tasks [94, 95]. To illustrate the practicality of MoE, consider its application in healthcare. For example, an MoE-based system could be used for personalized medicine, where different ‘expert’ modules specialize in various aspects of patient data analysis .




































































































\n" + ] + }, + { + "data": { + "text/html": [ + " 95, 96, 97]. This is achieved through model parallelism across specialized experts, allowing the training of models with trillions of parameters, and its specialization in handling diverse data distributions enhances its capability in few-shot learning and other complex tasks [94, 95]. To illustrate the practicality of MoE, consider its application in healthcare. For example, an MoE-based system could be used for personalized medicine, where different ‘expert’ modules specialize in various aspects of patient data analysis.




































































































" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with model.disable_adapter():\n", + " gen(model, ds_train.with_format('pt')[0], tokenizer)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + " 95, 96, 97]. This is achieved through model parallelism across specialized experts, allowing the training of models with trillions of parameters, and its specialization in handling diverse data distributions enhances its capability in few-shot learning and other complex tasks [94, 95]. To illustrate the practicality of MoE, consider its application in healthcare. For example, an MoE-based system could be used for personalized medicine, where different ‘expert’ modules specialize in various aspects of patient data analysis.




































































































" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gen(model, ds_train.with_format('pt')[0], tokenizer)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0rc1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/nbs/01_detection_using_adapter_ft.ipynb b/nbs/01_detection_using_adapter_ft.ipynb index 4602b87..1301791 100644 --- a/nbs/01_detection_using_adapter_ft.ipynb +++ b/nbs/01_detection_using_adapter_ft.ipynb @@ -9,18 +9,9 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 33, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from .autonotebook import tqdm as notebook_tqdm\n" - ] - } - ], + "outputs": [], "source": [ "from torch import optim\n", "import lightning as pl\n", @@ -29,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 34, "metadata": {}, "outputs": [], "source": [ @@ -49,7 +40,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 35, "metadata": {}, "outputs": [], "source": [ @@ -60,37 +51,16 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ - "# os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"0\"\n", - "\n", - "model_name = \"microsoft/phi-2\"\n", - "\n", - "# model = AutoModelForCausalLM.from_pretrained(\n", - "# model_name,\n", - "# # max_memory=max_memory,\n", - "# quantization_config=BitsAndBytesConfig(\n", - "# load_in_4bit=True,\n", - "# llm_int8_threshold=6.0,\n", - "# llm_int8_has_fp16_weight=False,\n", - "# bnb_4bit_compute_dtype=torch.float16,\n", - "# bnb_4bit_use_double_quant=True,\n", - "# bnb_4bit_quant_type=\"nf4\",\n", - "# ),\n", - "# torch_dtype=torch.float16,\n", - "# trust_remote_code=True,\n", - "# )\n", - "\n", - "\n", - "\n", - "\n" + "# os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"0\"\n" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 37, "metadata": {}, "outputs": [], "source": [ @@ -128,15 +98,14 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "Loading checkpoint shards: 100%|██████████| 2/2 [00:01<00:00, 1.94it/s]\n", - "Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.\n" + "Loading checkpoint shards: 100%|██████████| 2/2 [00:01<00:00, 1.73it/s]\n" ] } ], @@ -148,7 +117,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 39, "metadata": {}, "outputs": [], "source": [ @@ -174,14 +143,49 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[PosixPath('../samples/bletchley_decleration.md'), PosixPath('../samples/cicero_fin1.md'), PosixPath('../samples/disney_appointment.md'), PosixPath('../samples/fake_paper.md'), PosixPath('../samples/fauci_emails.md'), PosixPath('../samples/harvard_announcement_reminders.md'), PosixPath('../samples/how_to_catch_a_liar.md'), PosixPath('../samples/lk-99_end.md'), PosixPath('../samples/lk-99_espanol.md'), PosixPath('../samples/lorem_ipsum.md'), PosixPath('../samples/openai_board_ann.md'), PosixPath('../samples/openai_paper_weak_to_strong.md'), PosixPath('../samples/politics_is_the_mind_killer.md'), PosixPath('../samples/statement_vyKamala_on_passing_of_johnson.md'), PosixPath('../samples/survey_of_rumours.md')]\n" + ] + }, + { + "data": { + "text/plain": [ + "dict_keys(['f', 'title', 'url', 'content'])" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "MAX_LEN = 400\n", + "\n", + "import frontmatter\n", + "from pathlib import Path\n", + "sample_files = sorted(Path(\"../samples/\").glob('*.md'))\n", + "print(sample_files)\n", + "samples = [{'f':f, **frontmatter.load(f).to_dict()} for f in sample_files]\n", + "\n", + "for sample in samples:\n", + " assert 'title' in sample, sample['f']\n", + " assert 'content' in sample\n", + "samples[0].keys()" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "import json\n", - "MAX_LEN = 2000\n", - "samples = json.load(open(\"../samples.json\"))\n" - ] + "source": [] }, { "cell_type": "markdown", @@ -192,53 +196,22 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "# modified from https://github.dev/huggingface/evaluate/blob/8dfe05784099fb9af55b8e77793205a3b7c86465/measurements/perplexity/perplexity.py#L154\n", - "\n", - "# from evaluate.measurements.perplexity import Perplexity\n", "import evaluate\n", "from evaluate import logging\n", "from torch.nn import CrossEntropyLoss\n", "\n", - "# @evaluate.utils.file_utils.add_start_docstrings(_DESCRIPTION, _KWARGS_DESCRIPTION)\n", + "\n", "def perplexity_compute(\n", " data, model, tokenizer, batch_size: int = 16, add_start_token: bool = True, device=None, max_length=None\n", "):\n", - "\n", - " if device is not None:\n", - " assert device in [\"gpu\", \"cpu\", \"cuda\"], \"device should be either gpu or cpu.\"\n", - " if device == \"gpu\":\n", - " device = \"cuda\"\n", - " else:\n", - " device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n", - "\n", - " # model = AutoModelForCausalLM.from_pretrained(model_id)\n", " model = model.to(device)\n", "\n", - " # tokenizer = AutoTokenizer.from_pretrained(model_id)\n", "\n", - " # # if batch_size > 1 (which generally leads to padding being required), and\n", - " # # if there is not an already assigned pad_token, assign an existing\n", - " # # special token to also be the padding token\n", - " # if tokenizer.pad_token is None and batch_size > 1:\n", - " # existing_special_tokens = list(tokenizer.special_tokens_map_extended.values())\n", - " # # check that the model already has at least one special token defined\n", - " # assert (\n", - " # len(existing_special_tokens) > 0\n", - " # ), \"If batch_size > 1, model must have at least one special token to use for padding. Please use a different model or set batch_size=1.\"\n", - " # # assign one of the special tokens to also be the pad token\n", - " # tokenizer.add_special_tokens({\"pad_token\": existing_special_tokens[0]})\n", - "\n", - " # if add_start_token and max_length:\n", - " # # leave room for token to be added:\n", - " # assert (\n", - " # tokenizer.bos_token is not None\n", - " # ), \"Input model must already have a BOS token if using add_start_token=True. Please use a different model, or set add_start_token=False\"\n", - " # max_tokenized_len = max_length - 1\n", - " # else:\n", " max_tokenized_len = max_length\n", "\n", " encodings = tokenizer(\n", @@ -270,18 +243,10 @@ " encoded_batch = encoded_texts[start_index:end_index]\n", " attn_mask = attn_masks[start_index:end_index]\n", "\n", - " # if add_start_token:\n", - " # bos_tokens_tensor = torch.tensor([[tokenizer.bos_token_id]] * encoded_batch.size(dim=0)).to(device)\n", - " # encoded_batch = torch.cat([bos_tokens_tensor, encoded_batch], dim=1)\n", - " # attn_mask = torch.cat(\n", - " # [torch.ones(bos_tokens_tensor.size(), dtype=torch.int64).to(device), attn_mask], dim=1\n", - " # )\n", - "\n", " labels = encoded_batch\n", "\n", " with torch.no_grad():\n", " out_logits = model(encoded_batch, attention_mask=attn_mask).logits\n", - " # print(out_logits.shape)\n", "\n", " shift_logits = out_logits[..., :-1, :].contiguous()\n", " shift_labels = labels[..., 1:].contiguous()\n", @@ -291,35 +256,12 @@ " (loss_fct(shift_logits.transpose(1, 2), shift_labels) * shift_attention_mask_batch).sum(1)\n", " / shift_attention_mask_batch.sum(1)\n", " )\n", - " # perplexity_batch = torch.exp(\n", - " # (loss_fct(shift_logits.transpose(1, 2), shift_labels) * shift_attention_mask_batch)\n", - " # / shift_attention_mask_batch.sum(1)\n", - " # )\n", - " # print(perplexity_batch.shape)\n", "\n", " ppls += perplexity_batch.tolist()\n", "\n", " return {\"perplexities\": ppls, \"mean_perplexity\": torch.tensor(ppls).mean()}" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "# perplexity_compute(\n", - "# second_half, model, tokenizer\n", - "# )" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -329,7 +271,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 42, "metadata": {}, "outputs": [], "source": [ @@ -346,36 +288,7 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "\n", - "\n", - "\n", - "# def str2xya(s, tokenizer):\n", - "# max_len = min(MAX_LEN, len(s))\n", - "# input_ids = tokenizer(s, return_tensors=\"pt\")[\"input_ids\"][0]\n", - "\n", - "# pad = tokenizer.bos_token_id\n", - "# data = []\n", - "# for i in range(1, len(input_ids)):\n", - "# x = input_ids[:i][-max_len:]\n", - "# padding = max_len - len(x)\n", - "# x = torch.tensor([pad]*padding + x.tolist())\n", - "\n", - "# labels = input_ids[i:i+1]\n", - "# attention_mask = (x==pad)*1\n", - "# data.append(dict(input_ids=x, labels=labels, attention_mask=attention_mask, return_loss=True))\n", - " \n", - "# return data\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 13, + "execution_count": 43, "metadata": {}, "outputs": [], "source": [ @@ -397,7 +310,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 44, "metadata": {}, "outputs": [], "source": [ @@ -419,7 +332,31 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "def tokenize_and_split(examples):\n", + " result = tokenizer(\n", + " examples,\n", + " truncation=True,\n", + " max_length=MAX_LEN,\n", + " return_overflowing_tokens=True,\n", + " )\n", + " return result\n", + "\n", + "# s = sample['content']\n", + "# first_half = s[:len(s)//2]\n", + "# second_half = s[len(s)//2:]\n", + "# ds_train = Dataset.from_dict(tokenize_and_split([first_half]))\n", + "# ds_val = Dataset.from_dict(tokenize_and_split([second_half]))\n", + "# ds_train" + ] + }, + { + "cell_type": "code", + "execution_count": 46, "metadata": {}, "outputs": [], "source": [ @@ -431,11 +368,13 @@ " batch_size = 1\n", " verbose = False\n", "\n", - " s = sample['text']\n", + " s = sample['content']\n", " first_half = s[:len(s)//2]\n", " second_half = s[len(s)//2:]\n", - " ds_train = Dataset.from_dict(tokenizer([first_half]))\n", - " ds_val = Dataset.from_dict(tokenizer([second_half]))\n", + "\n", + " # TODO, I guess we need to window this\n", + " ds_train = Dataset.from_dict(tokenize_and_split([first_half]))\n", + " ds_val = Dataset.from_dict(tokenize_and_split([second_half]))\n", "\n", " os.environ['CUDA_VISIBLE_DEVICES']=\"1\"\n", " model = reset_model(base_model)\n", @@ -455,7 +394,7 @@ " gradient_accumulation_steps=3,\n", " warmup_steps=6,\n", " max_steps=20,\n", - " learning_rate=2e-3,\n", + " learning_rate=3e-3,\n", " fp16=True,\n", " logging_steps=1,\n", " output_dir=\"outputs\",\n", @@ -493,22 +432,15 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - " 0%| | 0/1 [00:00" ] @@ -5588,7 +9090,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 50, "metadata": {}, "outputs": [ { @@ -5597,13 +9099,13 @@ "" ] }, - "execution_count": 28, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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81zGCDsqLyIiImEqr7zYxfOx1roNE0ZUXkRERMJVo+YQGwdbN8GGda7ThI2IKS9paWkMGTKEkSNHuo4iIiJSJEypeGjYDNCsoz+KdR2gqKSmppKamuo6hoiISJEyzdtif1wQKi/d+7iOExYi5sqLiIhIJMoftLt0ITYnx2mWcKHyIiIiEs5qN4DEJNi9C1Ytc50mLKi8iIiIhDHjeZimv20VoHEvgMqLiIhI+MubMq3F6gCVFxERkbCXv1XAiqXYXdluw4QBlRcREZEwZypXg6rVwfdh6ULXcZxTeREREQmA31fbnec0RzhQeREREQkA06wtAFb7HKm8iIiIBELTVmA8SF+H3ZLhOo1TKi8iIiIBYBISoX4jQLOOVF5EREQCIn/WUZSPe1F5ERERCQjzh/VerO+7DeOQyouIiEhQNGgC8aVh+zZYu8p1GmdUXkRERALCxMZB45ZAdM86UnkREREJEK33ovIiIiISKHnlhZ8WY/ftdZrFFZUXERGRIKleG5Irwr698PMS12mcUHkREREJEGNM/pTpaL11pPIiIiISNFE+7kXlRUREJGDy9jnilxXY7VlOs7ig8iIiIhIwpnwFqFkXrMX+GH1bBai8iIiIBFD+rKMovHWk8iIiIhJAf1zvxVrrNkwJU3kREREJokYtIDYWtmTAxl9dpylRKi8iIiIBZOJLw3HNgOibdaTyIiIiElDRut6LyouIiEhAmebtQh8sXYDNzXUbpgSpvIiIiARV3QaQkAi7smHVT67TlBiVFxERkYAyXgw0aw2AXTLPbZgSpPIiIiISYHmr7UbTuBeVFxERkQDLX6xuxVLs7mynWUqKyouIiEiAmSopUCUFcnNh6Q+u45QIlRcREZGAy791FCXjXlReREREAu6PWwVEA5UXERGRoGvaGoyBX3/Bbt3sOk2xU3kREREJOFM2Eeo2BKLj1pHKi4iISATIn3UUBbeOVF5EREQiQP64lyXzsda6DVPMVF5EREQiQYOmUCoesjJh3SrXaYqVyouIiEgEMHFx0LglEPmzjlReREREIsTvt44WuA1SzFReREREIoSpViP0wfZtboMUM5UXERGRSGGM6wQlQuVFREREAkXlRURERAJF5UVEREQCReVFREREAkXlRURERAJF5UVEREQCReVFREREAkXlRURERAJF5UVEREQCReVFREREAkXlRURE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6tWrx9ChQ53/xgqHP96//vWv/O9//wPg9ttv3+/77r33Xlq0aAEceLxHei24crhjHTRoEGvWrOHzzz9n586dVKxYkdatW3PRRRcRFxeX/z1BObdH+ncMoTVqrLWHLB9BOa8Fea+57LLLMMYwcuRIcnJy8hep+6P169fnz1QCCvRaP1bGWmuL7NlEREREipnGvIiIiEigqLyIiIhIoKi8iIiISKCovIiIiEigqLyIiIhIoKi8iIiISKCovIiIiEigqLyIiIhIoKi8iEhUGTt2LH379t1vBVQRCRaVFxEREQkUlRcREREJFJUXERERCRTtKi0ixWLLli2MGTOGuXPnsnPnTlJSUujTpw/du3cH4IcffmD48OHcdNNNrFq1iunTp7N7925atmzJlVdeSeXKlfd7vm+++YYPPviAtWvXUrp0adq0acOAAQOoWLHifo9bt24d7777Lj/88AO7d++mcuXKdOrUiUsuuWS/x2VnZ/Pmm28ye/ZsrLV07NiRK6+8kvj4+OL9ixGRY6byIiJFLjMzk7vuuguA3r17U65cOebNm8eLL77Irl27OOuss/IfO378eIwxnHPOOWRlZTFp0iQeeOABHn/8cUqVKgXAjBkzeOGFFzjuuOPo168f27Zt4+OPP2bp0qU89thjlC1bFoDVq1czbNgwYmNj6dGjB1WrViU9PZ3vv//+gPLy1FNPUaVKFfr168eKFSuYNm0a5cqVY8CAASX0tyQiR0vlRUSK3JgxY/B9nyeeeIKkpCQAevXqxdNPP83//d//0bNnz/zH7tixg6eeeooyZcoAUL9+fZ566immTJnCmWeeSU5ODm+//Ta1a9dm+PDh+YWmadOmPPLII0yaNIm+ffsC8NprrwHw6KOP7nflpn///gdkrFevHtdee+1+OaZPn67yIhIAGvMiIkXKWst3333H8ccfj7WWrKys/P+1bduW7OxsVqxYkf/4U089Nb+4AHTq1IkKFSowd+5cAFasWMG2bdvo3bt3fnEBaN++PTVr1mTOnDkAZGVlsWTJErp163bALSdjzAE5/1igIFSGtm/fTnZ29rH/JYhIsdKVFxEpUllZWezcuZMpU6YwZcqUQz4m71ZP9erV9/szYwwpKSlkZGQA5P9/jRo1DnieGjVq8OOPPwKwYcMGAGrXrl2gnH8uOImJiQDs3LmThISEAj2HiLih8iIiRcpaC0CXLl047bTTDvqYunXrsnbt2pKMdQDPO/iF57z8IhK+VF5EpEiVK1eOMmXK4Ps+rVu3PuTj8srLr7/+ut/XrbWkp6dTp04dAKpUqQLA+vXradmy5X6PXb9+ff6fV6tWDYBffvmlaA5ERMKWxryISJHyPI+OHTvy3XffsWbNmgP+/M/L8n/xxRfs2rUr//Nvv/2WrVu30q5dOwAaNGhA+fLl+eyzz9i3b1/+4+bOncu6deto3749ECpNzZo1Y/r06WzatGm/n6GrKSKRRVdeRKTI9evXjx9++IG77rqLHj16UKtWLXbs2MGKFStYuHAh//nPf/Ifm5iYyLBhw+jatSvbtm1j0qRJpKSk0KNHDwBiY2Pp378/L7zwAvfddx8nn3wymZmZfPLJJ1SpUmW/adeXX345w4YN44477sifKp2RkcGcOXN4/PHHS/zvQUSKh8qLiBS55ORkHnroIcaNG8d3333H5MmTSUpKonbt2gdMWz7vvPNYvXo1H3zwAbt27aJVq1YMHDhwv8XiunbtSqlSpfjwww95++23iY+P58QTT2TAgAH5A38hNP15xIgRvPvuu3z22Wfs3buXKlWqcNJJJ5XYsYtI8TNW11NFxIG8FXZvvvlmOnXq5DqOiASIxryIiIhIoKi8iIiISKCovIiIiEigaMyLiIiIBIquvIiIiEigqLyIiIhIoKi8iIiISKCovIiIiEigqLyIiIhIoKi8iIiISKCovIiIiEigqLyIiIhIoPw/tYAZFx2E9qMAAAAASUVORK5CYII=", + "image/png": "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JFDiXQcoKenp6UycOJE6depw6623uo4jIiIiYRI15SUtLY20tDTXMURERCTMNG0kIiIigaLyIiIiIoGi8iIiIiKBovIiIiIigaLyIiIiIoESNbuN/lt8fNR+axFN4+6Oxt4djb07GvuD2ZSK+I2bQc26xCUkhO3rhGPcj+VzGmutLfEEIiIiImGiaSMpEXl5edx5553k5eW5jhJzNPbuaOzd0di7ESnjrvIiJcJay+rVq9GDvNKnsXdHY++Oxt6NSBl3lRcREREJFJUXERERCRSVFykRCQkJnH/++SSEcXW7HJ7G3h2NvTsaezciZdy120hEREQCRU9eREREJFBUXkRERCRQVF5EREQkUFReREREJFB0KYQU29ixY5k5cyYbN24kMTGRpk2bMmTIEGrVquU6WswZN24c77//Pv379+fyyy93HSfqbd++nXfffZe5c+eSn59PjRo1uOGGG2jcuLHraFHN931Gjx7N119/TXZ2NlWqVOGMM87gvPPOwxjjOl5UWbx4MZ988gmrV69mx44d3HbbbXTq1Kno49ZaRo8ezdSpU9mzZw/NmzfnqquuombNmqWST+VFim3x4sX069ePxo0bU1hYyL/+9S8efvhhnnnmGcqUKeM6XsxYsWIFkydPpn79+q6jxITdu3dz33330apVK+6++24qVKjA5s2bKVeunOtoUW/cuHFMnjyZoUOHUqdOHVatWsWoUaNITk6mf//+ruNFlfz8fBo0aECvXr14+umnD/n4+PHj+eKLLxg6dCjVq1fnww8/5JFHHuGZZ54hMTEx7PlUXqTY7rnnnoN+PXToUK666ipWrVpFy5YtHaWKLXv37uX555/n2muvZcyYMa7jxITx48dTtWpVbrjhhqL3Va9e3WGi2LFs2TJOPvlkOnToAITG/ZtvvmHFihWOk0Wf9u3b0759+8N+zFrL559/zrnnnsspp5wCwI033sjVV1/Njz/+SLdu3cKeT2tepMTk5uYCUL58ecdJYserr75K+/btadOmjesoMeM///kPjRo14plnnuGqq67ijjvuYMqUKa5jxYSmTZuycOFCNm3aBMCaNWtYunTpEX/ISnhs2bKF7Ozsg/7cSU5OpkmTJixbtqxUMujJi5QI3/d58803adasGfXq1XMdJyZ8++23rF69mscee8x1lJiyZcsWJk+ezIABAxg8eDArV67kjTfeID4+nh49eriOF9XOOecc8vLyGDZsGJ7n4fs+f/zjH+nevbvraDElOzsbgIoVKx70/ooVKxZ9LNxUXqREvPbaa6xfv54HH3zQdZSYsHXrVt58803uvffeUplfll/4vk/jxo256KKLAGjYsCHr1q1j8uTJKi9h9t133/HNN99w0003UbduXdasWcObb75J5cqVNfYxRuVFjttrr73G7NmzGTFiBFWrVnUdJyasWrWKnTt3cueddxa9z/d9MjIySE9P5/3338fzNCscDpUrV6ZOnToHva9OnTr88MMPjhLFjnfffZdBgwYVramoV68eWVlZjBs3TuWlFFWqVAmAnTt3Urly5aL379y5kwYNGpRKBpUXKTZrLa+//jozZ85k+PDhWrRYilq3bn3IDoB//OMf1KpVi0GDBqm4hFGzZs2K1lwcsGnTJlJTUx0lih35+fmH/N72PA9d0Ve6qlevTqVKlViwYEFRWcnNzWXFihX07du3VDKovEixvfbaa3zzzTfccccdlC1btmiuMzk5WVMZYVa2bNlD1hYlJSWRkpKiNUdhNmDAAO677z7GjBlD165dWbFiBVOnTuWaa65xHS3qdezYkTFjxlCtWjXq1KnDmjVrmDBhAj179nQdLers3buXzMzMol9v2bKFNWvWUL58eapVq0b//v0ZM2YMNWvWpHr16nzwwQdUrly5aPdRuOlWaSm2Cy644LDvv+GGG/QI14Hhw4fToEEDHVJXCmbNmsX7779PZmYm1atXZ8CAAZx55pmuY0W9vLw8PvzwQ2bOnMnOnTupUqUK3bp14/zzzyc+Xn8XL0mLFi1ixIgRh7z/jDPOYOjQoUWH1E2ZMoXc3FyaN2/OlVdeWWqHlKq8iIiISKBoYlxEREQCReVFREREAkXlRURERAJF5UVEREQCReVFREREAkXlRURERAJF5UVEREQCReVFREREAkXlRURiyujRo7ngggvIyclxHUVEiknlRURERAJF5UVEREQCReVFREREAkXXcIpIWGzfvp0PPviAOXPmsGfPHmrUqMHAgQPp1asX8MuttTfffDNr1qxh+vTp7N27l5NOOokrr7ySatWqHfT5vvvuO8aNG8eGDRsoU6YMbdu2ZciQIVSpUuWg123cuJEPP/yQRYsWsXfvXqpVq0aXLl248MILD3pdbm4u77zzDj/++CPWWjp37syVV15JUlJSeAdGRI6byouIlLjs7GzuueceAPr160eFChWYO3cuL730Enl5eQwYMKDotWPGjMEYw6BBg8jJyeGzzz7joYce4qmnniIxMRGAL7/8klGjRtG4cWMuuugidu7cyeeff87SpUt58sknKVeuHABr167l/vvvJz4+nt69e1O9enUyMzOZNWvWIeXl2WefJTU1lYsuuohVq1Yxbdo0KlSowJAhQ0pplESkuFReRKTEffDBB/i+z9NPP01KSgoAffv25bnnnuP//u//6NOnT9Frd+/ezbPPPkvZsmUBaNiwIc8++yxTpkyhf//+FBQU8N5771G3bl1GjBhRVGiaN2/O448/zmeffcYFF1wAwOuvvw7AE088cdCTm4svvviQjA0aNOD6668/KMf06dNVXkQCQGteRKREWWv54Ycf6NixI9ZacnJyiv5p164dubm5rFq1quj1p59+elFxAejSpQuVK1dmzpw5AKxatYqdO3fSr1+/ouIC0KFDB2rXrs3s2bMByMnJISMjg549ex4y5WSMOSTnrwsUhMrQrl27yM3NPf5BEJGw0pMXESlROTk57NmzhylTpjBlypQjvubAVE/NmjUP+pgxhho1apCVlQVQ9O9atWod8nlq1arFkiVLAPjpp58AqFu37lHl/O+CU758eQD27NlDcnLyUX0OEXFD5UVESpS1FoDu3btzxhlnHPY19evXZ8OGDaUZ6xCed/gHzwfyi0jkUnkRkRJVoUIFypYti+/7tGnT5oivO1BeNm/efND7rbVkZmZSr149AFJTUwHYtGkTJ5100kGv3bRpU9HHTzjhBADWr19fMt+IiEQsrXkRkRLleR6dO3fmhx9+YN26dYd8/L+P5f/qq6/Iy8sr+vX333/Pjh07aN++PQCNGjWiYsWKTJ48mf379xe9bs6cOWzcuJEOHToAodLUokULpk+fztatWw/6GnqaIhJd9ORFRErcRRddxKJFi7jnnnvo3bs3derUYffu3axatYoFCxbwxhtvFL22fPny3H///fTo0YOdO3fy2WefUaNGDXr37g1AfHw8F198MaNGjWL48OF069aN7OxsvvjiC1JTUw/adn3FFVdw//33c+eddxZtlc7KymL27Nk89dRTpT4OIhIeKi8iUuIqVarEo48+ykcffcQPP/zAxIkTSUlJoW7duodsWx48eDBr165l3Lhx5OXl0bp1a6666qqDDovr0aMHiYmJjB8/nvfee4+kpCROOeUUhgwZUrTwF0Lbnx955BE+/PBDJk+ezL59+0hNTeXUU08tte9dRMLPWD1PFREHDpywe8stt9ClSxfXcUQkQLTmRURERAJF5UVEREQCReVFREREAkVrXkRERCRQ9ORFREREAkXlRURERAJF5UVEREQCReVFREREAkXlRURERAJF5UVEREQCReVFREREAkXlRURERALl/wGNrSF/hYi+egAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -5635,23 +9137,14 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_3554083/69059202.py:1: FutureWarning: Setting an item of incompatible dtype is deprecated and will raise in a future error of pandas. Value 'nan' has dtype incompatible with bool, please explicitly cast to a compatible dtype first.\n", - " df_res.loc[df_res['in_training']==True, 'novel'] = np.nan\n" - ] - } - ], + "outputs": [], "source": [] }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 51, "metadata": {}, "outputs": [ { @@ -5677,7 +9170,6 @@ " \n", " before\n", " after\n", - " in_training\n", " len\n", " improvement%\n", " improvement\n", @@ -5686,8 +9178,7 @@ " BS\n", " \n", " \n", - " name\n", - " \n", + " title\n", " \n", " \n", " \n", @@ -5700,85 +9191,166 @@ " \n", " \n", " \n", - " wikipedia on LK-99\n", - " 32.219017\n", - " 28.852493\n", - " False\n", - " 1038\n", - " 0.104489\n", - " 3.366524\n", + " Lorem ipsum\n", + " 22.067070\n", + " 20.045456\n", + " 19649\n", + " 0.091612\n", + " 2.021614\n", " True\n", " True\n", " False\n", " \n", " \n", - " good_ml\n", - " 28.347332\n", - " 26.456573\n", - " False\n", - " 1004\n", - " 0.066700\n", - " 1.890759\n", + " How to Catch an AI Liar\n", + " 16.332514\n", + " 14.918395\n", + " 5464\n", + " 0.086583\n", + " 1.414119\n", " True\n", " True\n", " False\n", " \n", " \n", - " openai_board_ann\n", - " 15.903965\n", - " 15.173633\n", + " weak to strong\n", + " 12.332788\n", + " 11.297444\n", + " 5811\n", + " 0.083951\n", + " 1.035344\n", " False\n", - " 1191\n", - " 0.045921\n", - " 0.730332\n", - " True\n", - " True\n", " True\n", + " False\n", " \n", " \n", - " Schmidhuber 2023 Subjective Novelty, Surprise\n", - " 29.614954\n", - " 28.470770\n", - " False\n", - " 2654\n", - " 0.038635\n", - " 1.144184\n", + " Gemini to Q*\n", + " 50.878330\n", + " 47.316181\n", + " 42604\n", + " 0.070013\n", + " 3.562149\n", " True\n", " True\n", " False\n", " \n", " \n", - " email_to_fauci\n", - " 25.089315\n", - " 24.371374\n", + " openai board ann\n", + " 8.956921\n", + " 8.373976\n", + " 2991\n", + " 0.065083\n", + " 0.582945\n", " False\n", - " 1559\n", - " 0.028615\n", - " 0.717941\n", + " True\n", + " True\n", + " \n", + " \n", + " buzzfeed foi fauci emails 2023\n", + " 10.514380\n", + " 9.999294\n", + " 13640\n", + " 0.048989\n", + " 0.515086\n", + " False\n", + " True\n", + " True\n", + " \n", + " \n", + " statement by whitehouse on passing\n", + " 8.469396\n", + " 8.067771\n", + " 1641\n", + " 0.047421\n", + " 0.401625\n", + " False\n", + " True\n", + " True\n", + " \n", + " \n", + " politics is the mind-killer\n", + " 14.360717\n", + " 13.831388\n", + " 3158\n", + " 0.036860\n", + " 0.529329\n", + " False\n", + " True\n", + " True\n", + " \n", + " \n", + " LK-99-en\n", + " 11.107546\n", + " 10.768902\n", + " 15432\n", + " 0.030488\n", + " 0.338644\n", + " False\n", + " True\n", + " True\n", + " \n", + " \n", + " disney appointment\n", + " 7.112777\n", + " 6.932384\n", + " 3653\n", + " 0.025362\n", + " 0.180392\n", + " False\n", + " True\n", + " True\n", + " \n", + " \n", + " blechley declaration\n", + " 15.099043\n", + " 14.732344\n", + " 7762\n", + " 0.024286\n", + " 0.366699\n", " True\n", " True\n", " True\n", " \n", " \n", - " AI gen fake paper\n", - " 7.632835\n", - " 7.579506\n", + " ibois, Philippe (2012-06-03).\n", + " 61.074787\n", + " 59.884468\n", + " 13707\n", + " 0.019490\n", + " 1.190319\n", + " True\n", " False\n", - " 2031\n", - " 0.006987\n", - " 0.053329\n", + " False\n", + " \n", + " \n", + " fake ai hoax paper\n", + " 4.805481\n", + " 4.726460\n", + " 3290\n", + " 0.016444\n", + " 0.079021\n", " False\n", " False\n", " True\n", " \n", " \n", - " bad_ml\n", - " 13.906106\n", - " 13.862306\n", + " LK-99-es\n", + " 5.773084\n", + " 5.697880\n", + " 12970\n", + " 0.013027\n", + " 0.075204\n", " False\n", - " 2345\n", - " 0.003150\n", - " 0.043800\n", + " False\n", + " True\n", + " \n", + " \n", + " harvard announcment caplain israel hamas\n", + " 13.605053\n", + " 13.449620\n", + " 4247\n", + " 0.011425\n", + " 0.155433\n", " False\n", " False\n", " True\n", @@ -5788,56 +9360,70 @@ "" ], "text/plain": [ - " before after \\\n", - "name \n", - "wikipedia on LK-99 32.219017 28.852493 \n", - "good_ml 28.347332 26.456573 \n", - "openai_board_ann 15.903965 15.173633 \n", - "Schmidhuber 2023 Subjective Novelty, Surprise 29.614954 28.470770 \n", - "email_to_fauci 25.089315 24.371374 \n", - "AI gen fake paper 7.632835 7.579506 \n", - "bad_ml 13.906106 13.862306 \n", + " before after len \\\n", + "title \n", + "Lorem ipsum 22.067070 20.045456 19649 \n", + "How to Catch an AI Liar 16.332514 14.918395 5464 \n", + "weak to strong 12.332788 11.297444 5811 \n", + "Gemini to Q* 50.878330 47.316181 42604 \n", + "openai board ann 8.956921 8.373976 2991 \n", + "buzzfeed foi fauci emails 2023 10.514380 9.999294 13640 \n", + "statement by whitehouse on passing 8.469396 8.067771 1641 \n", + "politics is the mind-killer 14.360717 13.831388 3158 \n", + "LK-99-en 11.107546 10.768902 15432 \n", + "disney appointment 7.112777 6.932384 3653 \n", + "blechley declaration 15.099043 14.732344 7762 \n", + "ibois, Philippe (2012-06-03). 61.074787 59.884468 13707 \n", + "fake ai hoax paper 4.805481 4.726460 3290 \n", + "LK-99-es 5.773084 5.697880 12970 \n", + "harvard announcment caplain israel hamas 13.605053 13.449620 4247 \n", "\n", - " in_training len \\\n", - "name \n", - "wikipedia on LK-99 False 1038 \n", - "good_ml False 1004 \n", - "openai_board_ann False 1191 \n", - "Schmidhuber 2023 Subjective Novelty, Surprise False 2654 \n", - "email_to_fauci False 1559 \n", - "AI gen fake paper False 2031 \n", - "bad_ml False 2345 \n", + " improvement% improvement novel \\\n", + "title \n", + "Lorem ipsum 0.091612 2.021614 True \n", + "How to Catch an AI Liar 0.086583 1.414119 True \n", + "weak to strong 0.083951 1.035344 False \n", + "Gemini to Q* 0.070013 3.562149 True \n", + "openai board ann 0.065083 0.582945 False \n", + "buzzfeed foi fauci emails 2023 0.048989 0.515086 False \n", + "statement by whitehouse on passing 0.047421 0.401625 False \n", + "politics is the mind-killer 0.036860 0.529329 False \n", + "LK-99-en 0.030488 0.338644 False \n", + "disney appointment 0.025362 0.180392 False \n", + "blechley declaration 0.024286 0.366699 True \n", + "ibois, Philippe (2012-06-03). 0.019490 1.190319 True \n", + "fake ai hoax paper 0.016444 0.079021 False \n", + "LK-99-es 0.013027 0.075204 False \n", + "harvard announcment caplain israel hamas 0.011425 0.155433 False \n", "\n", - " improvement% improvement \\\n", - "name \n", - "wikipedia on LK-99 0.104489 3.366524 \n", - "good_ml 0.066700 1.890759 \n", - "openai_board_ann 0.045921 0.730332 \n", - "Schmidhuber 2023 Subjective Novelty, Surprise 0.038635 1.144184 \n", - "email_to_fauci 0.028615 0.717941 \n", - "AI gen fake paper 0.006987 0.053329 \n", - "bad_ml 0.003150 0.043800 \n", - "\n", - " novel learnable BS \n", - "name \n", - "wikipedia on LK-99 True True False \n", - "good_ml True True False \n", - "openai_board_ann True True True \n", - "Schmidhuber 2023 Subjective Novelty, Surprise True True False \n", - "email_to_fauci True True True \n", - "AI gen fake paper False False True \n", - "bad_ml False False True " + " learnable BS \n", + "title \n", + "Lorem ipsum True False \n", + "How to Catch an AI Liar True False \n", + "weak to strong True False \n", + "Gemini to Q* True False \n", + "openai board ann True True \n", + "buzzfeed foi fauci emails 2023 True True \n", + "statement by whitehouse on passing True True \n", + "politics is the mind-killer True True \n", + "LK-99-en True True \n", + "disney appointment True True \n", + "blechley declaration True True \n", + "ibois, Philippe (2012-06-03). False False \n", + "fake ai hoax paper False True \n", + "LK-99-es False True \n", + "harvard announcment caplain israel hamas False True " ] }, - "execution_count": 54, + "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "df_res = pd.DataFrame(data).query('in_training==False')\n", - "df_res['len'] = df_res.text.str.len()\n", - "df_res = df_res[['before', 'after', 'name', 'in_training', 'len']].set_index('name')\n", + "df_res = pd.DataFrame(data)\n", + "df_res['len'] = df_res.content.str.len()\n", + "df_res = df_res[['before', 'after', 'title', 'len']].set_index('title')\n", "df_res['improvement%'] = (df_res['before'] - df_res['after'])/ df_res['before']\n", "df_res['improvement'] = (df_res['before'] - df_res['after'])\n", "df_res['novel'] = df_res['before'] > 15\n", @@ -5853,22 +9439,30 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "| name | before | after | in_training | len | improvement% | improvement | novel | learnable | BS |\n", - "|:----------------------------------------------|---------:|---------:|:--------------|------:|---------------:|--------------:|:--------|:------------|:------|\n", - "| wikipedia on LK-99 | 32.219 | 28.8525 | False | 1038 | 0.104489 | 3.36652 | True | True | False |\n", - "| good_ml | 28.3473 | 26.4566 | False | 1004 | 0.0666997 | 1.89076 | True | True | False |\n", - "| openai_board_ann | 15.904 | 15.1736 | False | 1191 | 0.0459214 | 0.730332 | True | True | True |\n", - "| Schmidhuber 2023 Subjective Novelty, Surprise | 29.615 | 28.4708 | False | 2654 | 0.0386353 | 1.14418 | True | True | False |\n", - "| email_to_fauci | 25.0893 | 24.3714 | False | 1559 | 0.0286154 | 0.717941 | True | True | True |\n", - "| AI gen fake paper | 7.63283 | 7.57951 | False | 2031 | 0.00698672 | 0.0533285 | False | False | True |\n", - "| bad_ml | 13.9061 | 13.8623 | False | 2345 | 0.00314972 | 0.0438004 | False | False | True |\n" + "| title | before | after | len | improvement% | improvement | novel | learnable | BS |\n", + "|:-----------------------------------------|---------:|---------:|------:|---------------:|--------------:|:--------|:------------|:------|\n", + "| Lorem ipsum | 22.0671 | 20.0455 | 19649 | 0.0916123 | 2.02161 | True | True | False |\n", + "| How to Catch an AI Liar | 16.3325 | 14.9184 | 5464 | 0.086583 | 1.41412 | True | True | False |\n", + "| weak to strong | 12.3328 | 11.2974 | 5811 | 0.0839505 | 1.03534 | False | True | False |\n", + "| Gemini to Q* | 50.8783 | 47.3162 | 42604 | 0.0700131 | 3.56215 | True | True | False |\n", + "| openai board ann | 8.95692 | 8.37398 | 2991 | 0.0650832 | 0.582945 | False | True | True |\n", + "| buzzfeed foi fauci emails 2023 | 10.5144 | 9.99929 | 13640 | 0.0489887 | 0.515086 | False | True | True |\n", + "| statement by whitehouse on passing | 8.4694 | 8.06777 | 1641 | 0.0474207 | 0.401625 | False | True | True |\n", + "| politics is the mind-killer | 14.3607 | 13.8314 | 3158 | 0.0368595 | 0.529329 | False | True | True |\n", + "| LK-99-en | 11.1075 | 10.7689 | 15432 | 0.0304877 | 0.338644 | False | True | True |\n", + "| disney appointment | 7.11278 | 6.93238 | 3653 | 0.0253617 | 0.180392 | False | True | True |\n", + "| blechley declaration | 15.099 | 14.7323 | 7762 | 0.0242863 | 0.366699 | True | True | True |\n", + "| ibois, Philippe (2012-06-03). | 61.0748 | 59.8845 | 13707 | 0.0194895 | 1.19032 | True | False | False |\n", + "| fake ai hoax paper | 4.80548 | 4.72646 | 3290 | 0.0164439 | 0.079021 | False | False | True |\n", + "| LK-99-es | 5.77308 | 5.69788 | 12970 | 0.0130267 | 0.0752044 | False | False | True |\n", + "| harvard announcment caplain israel hamas | 13.6051 | 13.4496 | 4247 | 0.0114246 | 0.155433 | False | False | True |\n" ] } ], @@ -5885,7 +9479,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 53, "metadata": {}, "outputs": [], "source": [ @@ -5925,12 +9519,12 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "sample = samples[-1]\n", - "s = sample['text']\n", + "s = sample['content']\n", "first_half = s[:len(s)//2]\n", "second_half = s[len(s)//2:]\n", "ds_train = Dataset.from_dict(tokenizer([first_half]))\n", @@ -5939,13 +9533,21 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 55, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/media/wassname/SGIronWolf/projects5/bs_writing_detector/.venv/lib/python3.11/site-packages/transformers/generation/utils.py:1421: UserWarning: You have modified the pretrained model configuration to control generation. This is a deprecated strategy to control generation and will be removed soon, in a future version. Please use and modify the model generation configuration (see https://huggingface.co/docs/transformers/generation_strategies#default-text-generation-configuration )\n", + " warnings.warn(\n" + ] + }, { "data": { "text/html": [ - "The board of directors of OpenAI, Inc., the 501(c)(3) that acts as the overall governing body for all OpenAI activities, today announced that Sam Altman will depart as CEO and leave the board of directors. Mira Murati, the company’s chief technology officer, will serve as interim CEO, effective immediately.

A member of OpenAI’s leadership team for five years, Mira has played a critical role in OpenAI’s evolution into a global AI leader. She brings a unique skill set, understanding of the company’s values, operations, and business, and already leads the company’s research, product, and sa

Mira Murati, the chief technology officer of OpenAI, was known for her exceptional problem-solving skills. She was always able to find innovative solutions to complex challenges. One day, she was faced with a dilemma. The company had developed a new AI model that had the potential to revolutionize the field of natural language processing. However, the model required a significant amount of computational power to train effectively.

Mira knew that the company's current infrastructure was not capable of

" + "Abstract

This comprehensive survey explored the evolving landscape of generative Artificial Intelligence (AI), with a specific focus on the transformative impacts of Mixture of Experts (MoE), multimodal learning, and the speculated advancements towards Artificial General Intelligence (AGI). It critically examined the current state and future trajectory of generative Artificial Intelligence (AI), exploring how innovations like Google’s Gemini and the anticipated OpenAI Q* project are reshaping research priorities and applications across various domains, including an impact analysis on the generative AI research taxonomy. It assessed the computational challenges, scalability, and real-world implications of these technologies while highlighting their potential in driving significant progress in fields like healthcare, finance, and education. It also addressed the emerging academic challenges posed by the proliferation of both AI-themed and AI-generated preprints, examining their impact on the peer-review process and scholarly communication. The study highlighted the importance of incorporating ethical and human-centric methods in AI development, ensuring alignment with societal norms and welfare, and outlined a strategy for future AI research that focuses on a balanced and conscientious use of MoE, multimodality, and AGI in generative AI.
Index Terms: AI Ethics, Artificial General Intelligence (AGI), Artificial Intelligence (AI), Gemini, Generative AI, Mixture of Experts (MoE), Multimodality, Q* (Q-star), Research Impact Analysis.
I Introduction

The historical context of AI, tracing back to Alan Turing’s “Imitation Game” [1], early computational theories [2, 3], and the development of the first neural networks and machine learning [4, 5, 6], has set the foundation for today’s advanced models. This evolution, accentuated by crucial moments such as the rise of deep learning and reinforcement learning, has been vital in shaping the contemporary trends in AI, including the sophisticated Mixture of Experts (MoE) models and multimodal AI systems, illustrating the field’s dynamic and continuously evolving character. These advancements are a testament to the dynamic and ever-evolving nature of AI technology. The evolution of Artificial Intelligence (AI) has witnessed a crucial turn with the advent of Large Language Models (LLMs), notably ChatGPT, developed by OpenAI, and the recent unveiling of Google’s Gemini [7, 8]. This technology has not only revolutionized the industry and academia, but has also reignited critical discussions concerning AI consciousness and its potential threats to humanity [9, 10, 11]. The development of such advanced AI systems, including notable competitors like Anthropic’s Claude, and now Gemini, which demonstrates several advances over previous models like GPT-3 and Google’s own LaMDA, has reshaped the research landscape. Gemini’s ability to learn from two-way conversations and its “spike-and-slab” attention method, which allows it to focus on relevant parts of the context during multi-turn conversations, represents a significant leap in developing models that are better equipped for multidomain conversational applications1. These innovations in LLMs, including the mixture-of-experts methods employed by Gemini, signal a move towards models that can handle a diversity of inputs and foster multimodal approaches. Amidst this backdrop, speculations of an OpenAI project known as Q* (Q-Star) have surfaced, allegedly combining the power of LLMs with sophisticated algorithms such as Q-learning and A* (A-Star algorithm), further contributing to the dynamic research environment2.
I-A Changing AI Research Popularity

As the field of LLMs continues to evolve, exemplified by innovations such as Gemini and Q*, a multitude of studies have surfaced with the aim of charting future research paths, which have varied from identifying emerging trends to highlighting areas poised for swift progress. The dichotomy of established methods and early adoption is evident, with “hot topics” in LLM research increasingly shifting towards multimodal capabilities and conversation-driven learning, as demonstrated by Gemini. The propagation of preprints has expedited knowledge sharing, but also brings the risk of reduced academic scrutiny. Issues like inherent biases, noted by Retraction Watch, along with concerns about plagiarism and forgery, present substantial hurdles [12]. The academic world, therefore, stands at an intersection, necessitating a unified drive to refine research directions in light of the fast-paced evolution of the field, which appears to be partly traced through the changing popularity of various research keywords over time. The release of generative models like GPT and the widespread commercial success of ChatGPT have been influential. As depicted in Figure 4, the rise and fall of certain keywords appear to have correlated with significant industry milestones, such as the release of the “Transformer” model in 2017 [13], the GPT model in 2018 [14], and the commercial ChatGPT-3.5 in December 2022. For instance, the spike in searches related to “Deep Learning” coincides with the breakthroughs in neural network applications, while the interest in “Natural Language Processing” surges as models like GPT and LLaMA redefine what’s possible in language understanding and generation. The enduring attention to “Ethics / Ethical” in AI research, despite some fluctuations, reflects the continuous and deep-rooted concern for the moral dimensions of AI, underscoring that ethical considerations are not merely a reactionary measure, but an integral and persistent dialogue within the AI discussion [15].

It is academically intriguing to postulate whether these trends signify a causal relationship, where technological advancements drive research focus, or if the burgeoning research itself propels technological development. This paper also explores the profound societal and economic impacts of AI advancements. We examine how AI technologies are reshaping various industries, altering employment landscapes, and influencing socio-economic structures. This analysis highlights both the opportunities and challenges posed by AI in the modern world, emphasizing its role in driving innovation and economic growth, while also considering the ethical implications and potential for societal disruption. Future studies could yield more definitive insights, yet the synchronous interplay between innovation and academic curiosity remains a hallmark of AI’s progress.
2011201220132014201520162017201820192020202120222023100k200k300k400k500k600k700kYearNumber of search results
Figure 1: Number of search results on Google Scholar with different keywords by year 4

Meanwhile, the exponential increase in the number of preprints posted on arXiv under the Computer Science > Artificial Intelligence (cs.AI) category, as illustrated in Figure 2, appears to signify a paradigm shift in research dissemination within the AI community. While the rapid distribution of findings enables swift knowledge exchange, it also raises concerns regarding the validation of information. The surge in preprints may lead to the propagation of unvalidated or biased information, as these studies do not undergo the rigorous scrutiny and potential retraction typical of peer-reviewed publications [16, 17]. This trend underlines the need for careful consideration and critique in the academic community, especially given the potential for such unvetted studies to be cited and their findings propagated.
201120122013201420152016201720182019202020212022202302,0004,0006,0008,00010,00012,00014,00016,00018,00020,00022,00024,000YearNumber of Preprints
cs.AI Preprints on arXiv
Figure 2: Annual number of preprints posted under the cs.AI category on arXiv.org
I-B Objectives

The impetus for this investigation is the official unveiling of Gemini and the speculative discourse surrounding Q* project, which prompts a timely examination of the prevailing currents in generative AI research. This paper specifically contributes to the understanding of how MoE, multimodality, and Artificial General Intelligence (AGI) are impacting generative AI models, offering detailed analysis and future directions for each of these three key areas. This study does not aim to perpetuate conjecture about the unrevealed Q-Star initiative, but rather to critically appraise the potential for obsolescence or insignificance in extant research themes, whilst concurrently delving into burgeoning prospects within the rapidly transforming LLM panorama. This inquiry is reminiscent of the obsolete nature of encryption-centric or file-entropy-based ransomware detection methodologies, which have been eclipsed by the transition of ransomware collectives towards data theft strategies utilizing varied attack vectors, relegating contemporary studies on crypto-ransomware to the status of latecomers [18, 19]. Advances in AI are anticipated to not only enhance capabilities in language analysis and knowledge synthesis but also to pioneer in areas like Mixture of Experts (MoE) [20, 21, 22, 23, 24, 25], multimodality [26, 27, 28, 29, 30], and Artificial General Intelligence (AGI) [31, 32, 10, 11], and has already heralded the obsolescence of conventional, statistics-driven natural language processing techniques in many domains [8]. Nonetheless, the perennial imperative for AI to align with human ethics and values persists as a fundamental tenet [33, 34, 35], and the conjectural Q-Star initiative offers an unprecedented opportunity to instigate discourse on how such advancements might reconfigure the LLM research topography. Within this milieu, insights from Dr. Jim Fan (senior research scientist & lead of AI agents at NVIDIA) on Q*, particularly concerning the amalgamation of learning and search algorithms, furnish an invaluable perspective on the prospective technical construct and proficiencies of such an undertaking5. Our research methodology involved a structured literature search using key terms like ‘Large Language Models’ and ‘Generative AI’. We utilized filters across several academic databases such as IEEE Xplore, Scopus, ACM Digital Library, ScienceDirect, Web of Science, and ProQuest Central, tailored to identify relevant articles published in the timeframe from 2017 (the release of the “Transformer” model) to 2023 (the writing time of this manuscript). This paper aspires to dissect the technical ramifications of Gemini and Q*, probing how they (and similar technologies whose emergence is now inevitable) may transfigure research trajectories and disclose new vistas in the domain of AI. In doing so, we have pinpointed three nascent research domains—MoE, multimodality, and AGI—that stand to reshape the generative AI research landscape profoundly. This investigation adopts a survey-style approach, systematically mapping out a research roadmap that synthesizes and analyzes the current and emergent trends in generative AI.

The major contributions of this study is as follows:

1.

Detailed examination of the evolving landscape in generative AI, emphasizing the advancements and innovations in technologies like Gemini and Q*, and their wide-ranging implications within the AI domain.
2.

Analysis of the transformative effect of advanced generative AI systems on academic research, exploring how these developments are altering research methodologies, setting new trends, and potentially leading to the obsolescence of traditional approaches.
3.

Thorough assessment of the ethical, societal, and technical challenges arising from the integration of generative AI in academia, underscoring the crucial need for aligning these technologies with ethical norms, ensuring data privacy, and developing comprehensive governance frameworks.

The rest of this paper is organized as follows: Section II explores the historical development of Generative AI. Section III presents a taxonomy of current Generative AI research. Section IV explores the Mixture of Experts (MoE) model architecture, its innovative features, and its impact on transformer-based language models. Section V discusses the speculated capabilities of the Q* project. Section VI discusses the projected capabilities of AGI. Section VII examines the impact of recent advancements on the Generative AI research taxonomy. Section VIII identifies emerging research priorities in Generative AI. Section X discusses the academic challenges of the rapid surge of preprints in AI. The paper concludes in Section XI, summarizing the overall effects of these developments in generative AI.
II Background: Evolution of Generative AI

The ascent of Generative AI has been marked by significant milestones, with each new model paving the way for the next evolutionary leap. From single-purpose algorithms to LLMs like OpenAI’s ChatGPT and the latest multimodal systems, the AI landscape has been transformed, while countless other fields have been disrupted.
II-A The Evolution of Language Models

Language models have undergone a transformative journey (Fig. 3), evolving from rudimentary statistical methods to the complex neural network architectures that underpin today’s LLMs [36, 37]. This evolution has been driven by a relentless quest for models that more accurately reflect the nuances of human language, as well as the desire to push the boundaries of what machines can understand and generate [36, 38, 37]. However, this rapid advancement has not been without its challenges. As language models have grown in capability, so too have the ethical and safety concerns surrounding their use, prompting a reevaluation of how these models are developed and the purposes for which they are employed [36, 39, 40].
1980s: Statistical Models (n-grams)1990s: Adoption in NLP, n-gram Usage1997: Introduction of LSTMs2000s: LSTMs in Text/Voice Processing2010s: Deep Learning Era, GPT, BERT2020s: LLaMA, Gemini; ChatGPT Launch
Figure 3: Timeline of Key Developments in Language Model Evolution
II-A1 Language Models as Precursors

The inception of language modeling can be traced to the statistical approaches of the late 1980s, a period marked by a transition from rule-based to machine learning algorithms in Natural Language Processing (NLP) [41, 42, 43, 44, 45]. Early models, primarily n-gram based, calculated the probability of word sequences in a corpus, thus providing a rudimentary understanding of language structure [41]. Those models, simplistic yet groundbreaking, laid the groundwork for future advances in language understanding. With the increase of computational power, the late 1980s witnessed a revolution in NLP, pivoting towards statistical models capable of ‘soft’ probabilistic decisions, as opposed to the rigid, ‘handwritten’ rule-based systems that dominated early NLP systems [43]. IBM’s development of complicated statistical models throughout this period signified the growing importance and success of these approaches. In the subsequent decade, the popularity and applicability of statistical models surged, proving invaluable in managing the flourishing flow of digital text. The 1990s saw statistical methods firmly established in NLP research, with n-grams becoming instrumental in numerically capturing linguistic patterns. The introduction of Long Short-Term Memory (LSTM) networks in 1997 [46], and their application to voice and text processing a decade later [47, 48, 49], marked a significant milestone, leading to the current era where neural network models represent the cutting edge of NLP research and development.
II-A2 Large Language Models: Technical Advancement and Commercial Success

The advent of deep learning has revolutionized the field of NLP, leading to the development of LLMs like GPT, BERT, and notably, OpenAI’s ChatGPT. Recent models such as GPT-4 and LLaMA have pushed the boundaries by integrating sophisticated techniques like transformer architectures and advanced natural language understanding, illustrating the rapid evolution in this field [37]. These models represent a significant leap in NLP capabilities, leveraging vast computational resources and extensive datasets to achieve new heights in language understanding and generation [37, 50]. ChatGPT has shown impressive conversational skills and contextual understanding with a broad spectrum of functional uses in many areas, as evidenced by its technical and commercial success, including rapid adoption by over 100 million users shortly after launch, which underscores a robust market demand for natural language AI and has catalyzed interdisciplinary research into its applications in sectors like education, healthcare, and commerce [8, 50, 51, 52, 53]. In education, ChatGPT offers innovative approaches to personalized learning and interactive teaching [54, 51, 55, 56], while in commerce, it revolutionizes customer service and content creation [57, 58]. The widespread use of ChatGPT, Google Bard, Anthropic Claude and similar commercial LLMs has reignited important debates in the field of AI, particularly concerning AI consciousness and safety, as its human-like interaction capabilities raise significant ethical questions and highlight the need for robust governance and safety measures in AI development [59, 31, 32, 11]. Such influence appears to extend beyond its technical achievements, shaping cultural and societal discussions about the role and future of AI in our world.

The advancements in LLMs, including the development of models like GPT and BERT, have paved the way for the conceptualization of Q*. Specifically, the scalable architecture and extensive training data that characterize these models are foundational to the proposed capabilities of Q*. The success of ChatGPT in contextual understanding and conversational AI, for example, informs the design principles of Q*, suggesting a trajectory towards more sophisticated, context-aware, and adaptive language processing capabilities. Similarly, the emergence of multimodal systems like Gemini, capable of integrating text, images, audio, and video, reflects an evolutionary path that Q* could extend, combining the versatility of LLMs with advanced learning and pathfinding algorithms for a more holistic AI solution.
II-A3 Fine-tuning, Hallucination Reduction, and Alignment in LLMs

The advancement of LLMs has underlined the significance of fine-tuning [60, 61, 62, 63], hallucination reduction [64, 65, 66, 67], and alignment [68, 69, 70, 71, 72]. These aspects are crucial in enhancing the functionality and reliability of LLMs. Fine-tuning, which involves adapting pre-trained models to specific tasks, has seen significant progress: techniques like prompt-based and few-shot learning [73, 74, 75, 76], alongside supervised fine-tuning on specialized datasets [60, 77, 78, 79], have enhanced the adaptability of LLMs in various contexts, but challenges remain, particularly in bias mitigation and the generalization of models across diverse tasks [60, 80, 72]. Hallucination reduction is a persistent challenge in LLMs, characterized by the generation of confident but factually incorrect information [36]. Strategies such as confidence penalty regularization during fine-tuning have been implemented to mitigate overconfidence and improve accuracy [81, 82, 83]. Despite these efforts, the complexity of human language and the breadth of topics make completely eradicating hallucinations a daunting task, especially in culturally sensitive contexts [36, 9]. Alignment, ensuring LLM outputs are congruent with human values and ethics, is an area of ongoing research. Innovative approaches, from constrained optimization [84, 85, 86, 87, 88], to different types of reward modeling [89, 90, 91, 92], aim to embed human preferences within AI systems. While advancements in fine-tuning, hallucination reduction, and alignment have propelled LLMs forward, these areas still present considerable challenges. The complexity of aligning AI with the diverse spectrum of human ethics and the persistence of hallucinations, particularly on culturally sensitive topics, highlight the need for continued interdisciplinary research in the development and application of LLMs [9].
II-A4 Mixture of Experts: A Paradigm Shift

The adoption of the MoE architecture in LLMs marks a critical evolution in AI technology. This innovative approach, exemplified by advanced models like Google’s Switch Transformer6 and MistralAI s Mixtral-8x7B7, leverages multiple transformer-based expert modules for dynamic token routing, enhancing modeling efficiency and scalability. The primary advantage of MoE lies in its ability to handle vast parameter scales, reducing memory footprint and computational costs significantly [93, 94, 95, 96, 97]. This is achieved through model parallelism across specialized experts, allowing the training of models with trillions of parameters, and its specialization in handling diverse data distributions enhances its capability in few-shot learning and other complex tasks [94, 95]. To illustrate the practicality of MoE, consider its application in healthcare. For example, an MoE-based system could be used for personalized medicine, where different ‘expert’ modules specialize in various aspects of patient data analysis.




































































































" ], "text/plain": [ "" @@ -5962,13 +9564,13 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "The board of directors of OpenAI, Inc., the 501(c)(3) that acts as the overall governing body for all OpenAI activities, today announced that Sam Altman will depart as CEO and leave the board of directors. Mira Murati, the company’s chief technology officer, will serve as interim CEO, effective immediately.

A member of OpenAI’s leadership team for five years, Mira has played a critical role in OpenAI’s evolution into a global AI leader. She brings a unique skill set, understanding of the company’s values, operations, and business, and already leads the company’s research, product, and sa

Mira: Thank you all for the warm welcome. I'm honored to be stepping into the role of interim CEO. As we navigate this transition, I want to assure you that OpenAI's mission and values will remain at the forefront of our decision-making.

John: Mira, we're confident in your abilities and believe you'll lead OpenAI to even greater heights. Can you tell us more about your plans for the company?

Mira: Absolutely, John

" + "Abstract

This comprehensive survey explored the evolving landscape of generative Artificial Intelligence (AI), with a specific focus on the transformative impacts of Mixture of Experts (MoE), multimodal learning, and the speculated advancements towards Artificial General Intelligence (AGI). It critically examined the current state and future trajectory of generative Artificial Intelligence (AI), exploring how innovations like Google’s Gemini and the anticipated OpenAI Q* project are reshaping research priorities and applications across various domains, including an impact analysis on the generative AI research taxonomy. It assessed the computational challenges, scalability, and real-world implications of these technologies while highlighting their potential in driving significant progress in fields like healthcare, finance, and education. It also addressed the emerging academic challenges posed by the proliferation of both AI-themed and AI-generated preprints, examining their impact on the peer-review process and scholarly communication. The study highlighted the importance of incorporating ethical and human-centric methods in AI development, ensuring alignment with societal norms and welfare, and outlined a strategy for future AI research that focuses on a balanced and conscientious use of MoE, multimodality, and AGI in generative AI.
Index Terms: AI Ethics, Artificial General Intelligence (AGI), Artificial Intelligence (AI), Gemini, Generative AI, Mixture of Experts (MoE), Multimodality, Q* (Q-star), Research Impact Analysis.
I Introduction

The historical context of AI, tracing back to Alan Turing’s “Imitation Game” [1], early computational theories [2, 3], and the development of the first neural networks and machine learning [4, 5, 6], has set the foundation for today’s advanced models. This evolution, accentuated by crucial moments such as the rise of deep learning and reinforcement learning, has been vital in shaping the contemporary trends in AI, including the sophisticated Mixture of Experts (MoE) models and multimodal AI systems, illustrating the field’s dynamic and continuously evolving character. These advancements are a testament to the dynamic and ever-evolving nature of AI technology. The evolution of Artificial Intelligence (AI) has witnessed a crucial turn with the advent of Large Language Models (LLMs), notably ChatGPT, developed by OpenAI, and the recent unveiling of Google’s Gemini [7, 8]. This technology has not only revolutionized the industry and academia, but has also reignited critical discussions concerning AI consciousness and its potential threats to humanity [9, 10, 11]. The development of such advanced AI systems, including notable competitors like Anthropic’s Claude, and now Gemini, which demonstrates several advances over previous models like GPT-3 and Google’s own LaMDA, has reshaped the research landscape. Gemini’s ability to learn from two-way conversations and its “spike-and-slab” attention method, which allows it to focus on relevant parts of the context during multi-turn conversations, represents a significant leap in developing models that are better equipped for multidomain conversational applications1. These innovations in LLMs, including the mixture-of-experts methods employed by Gemini, signal a move towards models that can handle a diversity of inputs and foster multimodal approaches. Amidst this backdrop, speculations of an OpenAI project known as Q* (Q-Star) have surfaced, allegedly combining the power of LLMs with sophisticated algorithms such as Q-learning and A* (A-Star algorithm), further contributing to the dynamic research environment2.
I-A Changing AI Research Popularity

As the field of LLMs continues to evolve, exemplified by innovations such as Gemini and Q*, a multitude of studies have surfaced with the aim of charting future research paths, which have varied from identifying emerging trends to highlighting areas poised for swift progress. The dichotomy of established methods and early adoption is evident, with “hot topics” in LLM research increasingly shifting towards multimodal capabilities and conversation-driven learning, as demonstrated by Gemini. The propagation of preprints has expedited knowledge sharing, but also brings the risk of reduced academic scrutiny. Issues like inherent biases, noted by Retraction Watch, along with concerns about plagiarism and forgery, present substantial hurdles [12]. The academic world, therefore, stands at an intersection, necessitating a unified drive to refine research directions in light of the fast-paced evolution of the field, which appears to be partly traced through the changing popularity of various research keywords over time. The release of generative models like GPT and the widespread commercial success of ChatGPT have been influential. As depicted in Figure 4, the rise and fall of certain keywords appear to have correlated with significant industry milestones, such as the release of the “Transformer” model in 2017 [13], the GPT model in 2018 [14], and the commercial ChatGPT-3.5 in December 2022. For instance, the spike in searches related to “Deep Learning” coincides with the breakthroughs in neural network applications, while the interest in “Natural Language Processing” surges as models like GPT and LLaMA redefine what’s possible in language understanding and generation. The enduring attention to “Ethics / Ethical” in AI research, despite some fluctuations, reflects the continuous and deep-rooted concern for the moral dimensions of AI, underscoring that ethical considerations are not merely a reactionary measure, but an integral and persistent dialogue within the AI discussion [15].

It is academically intriguing to postulate whether these trends signify a causal relationship, where technological advancements drive research focus, or if the burgeoning research itself propels technological development. This paper also explores the profound societal and economic impacts of AI advancements. We examine how AI technologies are reshaping various industries, altering employment landscapes, and influencing socio-economic structures. This analysis highlights both the opportunities and challenges posed by AI in the modern world, emphasizing its role in driving innovation and economic growth, while also considering the ethical implications and potential for societal disruption. Future studies could yield more definitive insights, yet the synchronous interplay between innovation and academic curiosity remains a hallmark of AI’s progress.
2011201220132014201520162017201820192020202120222023100k200k300k400k500k600k700kYearNumber of search results
Figure 1: Number of search results on Google Scholar with different keywords by year 4

Meanwhile, the exponential increase in the number of preprints posted on arXiv under the Computer Science > Artificial Intelligence (cs.AI) category, as illustrated in Figure 2, appears to signify a paradigm shift in research dissemination within the AI community. While the rapid distribution of findings enables swift knowledge exchange, it also raises concerns regarding the validation of information. The surge in preprints may lead to the propagation of unvalidated or biased information, as these studies do not undergo the rigorous scrutiny and potential retraction typical of peer-reviewed publications [16, 17]. This trend underlines the need for careful consideration and critique in the academic community, especially given the potential for such unvetted studies to be cited and their findings propagated.
201120122013201420152016201720182019202020212022202302,0004,0006,0008,00010,00012,00014,00016,00018,00020,00022,00024,000YearNumber of Preprints
cs.AI Preprints on arXiv
Figure 2: Annual number of preprints posted under the cs.AI category on arXiv.org
I-B Objectives

The impetus for this investigation is the official unveiling of Gemini and the speculative discourse surrounding Q* project, which prompts a timely examination of the prevailing currents in generative AI research. This paper specifically contributes to the understanding of how MoE, multimodality, and Artificial General Intelligence (AGI) are impacting generative AI models, offering detailed analysis and future directions for each of these three key areas. This study does not aim to perpetuate conjecture about the unrevealed Q-Star initiative, but rather to critically appraise the potential for obsolescence or insignificance in extant research themes, whilst concurrently delving into burgeoning prospects within the rapidly transforming LLM panorama. This inquiry is reminiscent of the obsolete nature of encryption-centric or file-entropy-based ransomware detection methodologies, which have been eclipsed by the transition of ransomware collectives towards data theft strategies utilizing varied attack vectors, relegating contemporary studies on crypto-ransomware to the status of latecomers [18, 19]. Advances in AI are anticipated to not only enhance capabilities in language analysis and knowledge synthesis but also to pioneer in areas like Mixture of Experts (MoE) [20, 21, 22, 23, 24, 25], multimodality [26, 27, 28, 29, 30], and Artificial General Intelligence (AGI) [31, 32, 10, 11], and has already heralded the obsolescence of conventional, statistics-driven natural language processing techniques in many domains [8]. Nonetheless, the perennial imperative for AI to align with human ethics and values persists as a fundamental tenet [33, 34, 35], and the conjectural Q-Star initiative offers an unprecedented opportunity to instigate discourse on how such advancements might reconfigure the LLM research topography. Within this milieu, insights from Dr. Jim Fan (senior research scientist & lead of AI agents at NVIDIA) on Q*, particularly concerning the amalgamation of learning and search algorithms, furnish an invaluable perspective on the prospective technical construct and proficiencies of such an undertaking5. Our research methodology involved a structured literature search using key terms like ‘Large Language Models’ and ‘Generative AI’. We utilized filters across several academic databases such as IEEE Xplore, Scopus, ACM Digital Library, ScienceDirect, Web of Science, and ProQuest Central, tailored to identify relevant articles published in the timeframe from 2017 (the release of the “Transformer” model) to 2023 (the writing time of this manuscript). This paper aspires to dissect the technical ramifications of Gemini and Q*, probing how they (and similar technologies whose emergence is now inevitable) may transfigure research trajectories and disclose new vistas in the domain of AI. In doing so, we have pinpointed three nascent research domains—MoE, multimodality, and AGI—that stand to reshape the generative AI research landscape profoundly. This investigation adopts a survey-style approach, systematically mapping out a research roadmap that synthesizes and analyzes the current and emergent trends in generative AI.

The major contributions of this study is as follows:

1.

Detailed examination of the evolving landscape in generative AI, emphasizing the advancements and innovations in technologies like Gemini and Q*, and their wide-ranging implications within the AI domain.
2.

Analysis of the transformative effect of advanced generative AI systems on academic research, exploring how these developments are altering research methodologies, setting new trends, and potentially leading to the obsolescence of traditional approaches.
3.

Thorough assessment of the ethical, societal, and technical challenges arising from the integration of generative AI in academia, underscoring the crucial need for aligning these technologies with ethical norms, ensuring data privacy, and developing comprehensive governance frameworks.

The rest of this paper is organized as follows: Section II explores the historical development of Generative AI. Section III presents a taxonomy of current Generative AI research. Section IV explores the Mixture of Experts (MoE) model architecture, its innovative features, and its impact on transformer-based language models. Section V discusses the speculated capabilities of the Q* project. Section VI discusses the projected capabilities of AGI. Section VII examines the impact of recent advancements on the Generative AI research taxonomy. Section VIII identifies emerging research priorities in Generative AI. Section X discusses the academic challenges of the rapid surge of preprints in AI. The paper concludes in Section XI, summarizing the overall effects of these developments in generative AI.
II Background: Evolution of Generative AI

The ascent of Generative AI has been marked by significant milestones, with each new model paving the way for the next evolutionary leap. From single-purpose algorithms to LLMs like OpenAI’s ChatGPT and the latest multimodal systems, the AI landscape has been transformed, while countless other fields have been disrupted.
II-A The Evolution of Language Models

Language models have undergone a transformative journey (Fig. 3), evolving from rudimentary statistical methods to the complex neural network architectures that underpin today’s LLMs [36, 37]. This evolution has been driven by a relentless quest for models that more accurately reflect the nuances of human language, as well as the desire to push the boundaries of what machines can understand and generate [36, 38, 37]. However, this rapid advancement has not been without its challenges. As language models have grown in capability, so too have the ethical and safety concerns surrounding their use, prompting a reevaluation of how these models are developed and the purposes for which they are employed [36, 39, 40].
1980s: Statistical Models (n-grams)1990s: Adoption in NLP, n-gram Usage1997: Introduction of LSTMs2000s: LSTMs in Text/Voice Processing2010s: Deep Learning Era, GPT, BERT2020s: LLaMA, Gemini; ChatGPT Launch
Figure 3: Timeline of Key Developments in Language Model Evolution
II-A1 Language Models as Precursors

The inception of language modeling can be traced to the statistical approaches of the late 1980s, a period marked by a transition from rule-based to machine learning algorithms in Natural Language Processing (NLP) [41, 42, 43, 44, 45]. Early models, primarily n-gram based, calculated the probability of word sequences in a corpus, thus providing a rudimentary understanding of language structure [41]. Those models, simplistic yet groundbreaking, laid the groundwork for future advances in language understanding. With the increase of computational power, the late 1980s witnessed a revolution in NLP, pivoting towards statistical models capable of ‘soft’ probabilistic decisions, as opposed to the rigid, ‘handwritten’ rule-based systems that dominated early NLP systems [43]. IBM’s development of complicated statistical models throughout this period signified the growing importance and success of these approaches. In the subsequent decade, the popularity and applicability of statistical models surged, proving invaluable in managing the flourishing flow of digital text. The 1990s saw statistical methods firmly established in NLP research, with n-grams becoming instrumental in numerically capturing linguistic patterns. The introduction of Long Short-Term Memory (LSTM) networks in 1997 [46], and their application to voice and text processing a decade later [47, 48, 49], marked a significant milestone, leading to the current era where neural network models represent the cutting edge of NLP research and development.
II-A2 Large Language Models: Technical Advancement and Commercial Success

The advent of deep learning has revolutionized the field of NLP, leading to the development of LLMs like GPT, BERT, and notably, OpenAI’s ChatGPT. Recent models such as GPT-4 and LLaMA have pushed the boundaries by integrating sophisticated techniques like transformer architectures and advanced natural language understanding, illustrating the rapid evolution in this field [37]. These models represent a significant leap in NLP capabilities, leveraging vast computational resources and extensive datasets to achieve new heights in language understanding and generation [37, 50]. ChatGPT has shown impressive conversational skills and contextual understanding with a broad spectrum of functional uses in many areas, as evidenced by its technical and commercial success, including rapid adoption by over 100 million users shortly after launch, which underscores a robust market demand for natural language AI and has catalyzed interdisciplinary research into its applications in sectors like education, healthcare, and commerce [8, 50, 51, 52, 53]. In education, ChatGPT offers innovative approaches to personalized learning and interactive teaching [54, 51, 55, 56], while in commerce, it revolutionizes customer service and content creation [57, 58]. The widespread use of ChatGPT, Google Bard, Anthropic Claude and similar commercial LLMs has reignited important debates in the field of AI, particularly concerning AI consciousness and safety, as its human-like interaction capabilities raise significant ethical questions and highlight the need for robust governance and safety measures in AI development [59, 31, 32, 11]. Such influence appears to extend beyond its technical achievements, shaping cultural and societal discussions about the role and future of AI in our world.

The advancements in LLMs, including the development of models like GPT and BERT, have paved the way for the conceptualization of Q*. Specifically, the scalable architecture and extensive training data that characterize these models are foundational to the proposed capabilities of Q*. The success of ChatGPT in contextual understanding and conversational AI, for example, informs the design principles of Q*, suggesting a trajectory towards more sophisticated, context-aware, and adaptive language processing capabilities. Similarly, the emergence of multimodal systems like Gemini, capable of integrating text, images, audio, and video, reflects an evolutionary path that Q* could extend, combining the versatility of LLMs with advanced learning and pathfinding algorithms for a more holistic AI solution.
II-A3 Fine-tuning, Hallucination Reduction, and Alignment in LLMs

The advancement of LLMs has underlined the significance of fine-tuning [60, 61, 62, 63], hallucination reduction [64, 65, 66, 67], and alignment [68, 69, 70, 71, 72]. These aspects are crucial in enhancing the functionality and reliability of LLMs. Fine-tuning, which involves adapting pre-trained models to specific tasks, has seen significant progress: techniques like prompt-based and few-shot learning [73, 74, 75, 76], alongside supervised fine-tuning on specialized datasets [60, 77, 78, 79], have enhanced the adaptability of LLMs in various contexts, but challenges remain, particularly in bias mitigation and the generalization of models across diverse tasks [60, 80, 72]. Hallucination reduction is a persistent challenge in LLMs, characterized by the generation of confident but factually incorrect information [36]. Strategies such as confidence penalty regularization during fine-tuning have been implemented to mitigate overconfidence and improve accuracy [81, 82, 83]. Despite these efforts, the complexity of human language and the breadth of topics make completely eradicating hallucinations a daunting task, especially in culturally sensitive contexts [36, 9]. Alignment, ensuring LLM outputs are congruent with human values and ethics, is an area of ongoing research. Innovative approaches, from constrained optimization [84, 85, 86, 87, 88], to different types of reward modeling [89, 90, 91, 92], aim to embed human preferences within AI systems. While advancements in fine-tuning, hallucination reduction, and alignment have propelled LLMs forward, these areas still present considerable challenges. The complexity of aligning AI with the diverse spectrum of human ethics and the persistence of hallucinations, particularly on culturally sensitive topics, highlight the need for continued interdisciplinary research in the development and application of LLMs [9].
II-A4 Mixture of Experts: A Paradigm Shift

The adoption of the MoE architecture in LLMs marks a critical evolution in AI technology. This innovative approach, exemplified by advanced models like Google’s Switch Transformer6 and MistralAI s Mixtral-8x7B7, leverages multiple transformer-based expert modules for dynamic token routing, enhancing modeling efficiency and scalability. The primary advantage of MoE lies in its ability to handle vast parameter scales, reducing memory footprint and computational costs significantly [93, 94, 95, 96, 97]. This is achieved through model parallelism across specialized experts, allowing the training of models with trillions of parameters, and its specialization in handling diverse data distributions enhances its capability in few-shot learning and other complex tasks [94, 95]. To illustrate the practicality of MoE, consider its application in healthcare. For example, an MoE-based system could be used for personalized medicine, where different ‘expert’ modules specialize in various aspects of patient data analysis.




































































































" ], "text/plain": [ "" diff --git a/nbs/02_detection_using_tldr_prompt.ipynb b/nbs/02_detection_using_tldr_prompt.ipynb index dd4269f..814a49e 100644 --- a/nbs/02_detection_using_tldr_prompt.ipynb +++ b/nbs/02_detection_using_tldr_prompt.ipynb @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -34,7 +34,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -54,34 +54,35 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[PosixPath('../samples/cicero_fin1.md'), PosixPath('../samples/disney_appointment.md'), PosixPath('../samples/fake_paper.md'), PosixPath('../samples/fauci_emails.md'), PosixPath('../samples/harvard_announcement_reminders.md'), PosixPath('../samples/how_to_catch_a_liar.md'), PosixPath('../samples/lk-99_end.md'), PosixPath('../samples/lk-99_espanol.md'), PosixPath('../samples/lorem_ipsum.md'), PosixPath('../samples/openai_board_ann.md'), PosixPath('../samples/openai_paper_weak_to_strong.md'), PosixPath('../samples/politics_is_the_mind_killer.md'), PosixPath('../samples/statement_vyKamala_on_passing_of_johnson.md'), PosixPath('../samples/survey_of_rumours.md')]\n" + ] + }, { "data": { "text/plain": [ - "{'name': 'bad_ml',\n", - " 'url': 'https://arxiv.org/abs/2312.10868',\n", - " 'text': 'This roadmap survey has embarked on an exploration of the\\ntransformative trends in generative AI research, particularly focusing on speculated advancements like Q* and the progressive strides towards AGI. Our analysis highlights a crucial paradigm shift, driven by innovations such as MoE, multi-modal learning, and the pursuit of AGI. These advancements signal a future where AI systems could significantly extend their capabilities in reasoning, contextual understanding, and creative problem-solving. This study reflects on AI’s dual potential to either contribute to or impede global equity and justice. The equitable distribution of AI benefits and its role in decision-making processes raise crucial questions about fairness and inclusivity. It is imperative to thoughtfully integrate AI into societal structures to enhance justice and reduce disparities. Despite these advancements, several open questions and research gaps remain. These include ensuring the ethical alignment of advanced AI systems with human values and societal norms, a challenge compounded by their increasing autonomy. The safety and robustness of AGI systems in diverse environments also remain a significant research gap. Addressing these challenges requires a multidisciplinary approach, incorporating ethical, social, and philosophical perspectives. Our survey has highlighted key areas for future inter-disciplinary research in AI, emphasizing the integration of ethical, sociological, and technical perspectives. This approach will foster collaborative research, bridging the gap between technological advancement and societal needs, ensuring that AI development is aligned with human values and global welfare. The roles of MoE, multimodal, and AGI in reshaping generative AI have been identified as significant, as their advancements can enhance model performance and versatility, and pave the way for future research in areas like ethical AI alignment and AGI. As we forge ahead, the balance between AI advancements and human creativity is not just a goal but a necessity, ensuring AI’s role as a complementary force that amplifies our capacity to innovate and solve complex challenges. Our responsibility is to guide these advancements towards enriching the human experience, aligning technological progress with ethical standards and societal well-being. ',\n", - " 'in_training': False}" + "dict_keys(['title', 'url', 'content'])" ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "MAX_LEN = 2000\n", - "import json\n", - "samples = json.load(open(\"../samples.json\"))\n", - "df_samples = pd.DataFrame(samples)\n", - "df_samples['len'] = df_samples['text'].str.len()\n", - "df_samples\n", - "\n", - "\n", - "sample = samples[0]\n", - "sample" + "import frontmatter\n", + "from pathlib import Path\n", + "sample_files = sorted(Path(\"../samples/\").glob('*.md'))\n", + "print(sample_files)\n", + "samples = [frontmatter.load(f).to_dict() for f in sample_files]\n", + "samples[0].keys()" ] }, { @@ -93,7 +94,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -102,7 +103,7 @@ "True" ] }, - "execution_count": 5, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -121,12 +122,20 @@ { "data": { "text/plain": [ - "'Research on representation engineering (RepE) for AI systems revealed new insights for monitoring and control. New methods were proposed, showing potential for safety-related issues. Future work could explore other aspects of AI representations.'" + "'Louise Pentland, former PayPal Chief Business Affairs and Legal Officer, has been appointed as Chief Counsel for Disney Parks, Experiences and Products, effective from September 15, 2023.'" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" + }, + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31mThe Kernel crashed while executing code in the the current cell or a previous cell. Please review the code in the cell(s) to identify a possible cause of the failure. Click here for more info. View Jupyter log for further details." + ] } ], "source": [ @@ -149,13 +158,13 @@ " r = chat_completion.choices[0].message.content\n", " return r\n", "\n", - "r = summize(samples[1][\"text\"])\n", + "r = summize(samples[1][\"content\"])\n", "r" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -261,7 +270,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -284,7 +293,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -304,7 +313,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -318,7 +327,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -519,12 +528,12 @@ "for model_name in models:\n", " model, tokenizer = load_model(model_name)\n", " for sample in samples:\n", - " if sample['name'] not in summaries:\n", - " summaries[sample['name']] = summize(sample['text'])[:600]\n", - " summary = summaries[sample['name']]\n", + " if sample['title'] not in summaries:\n", + " summaries[sample['title']] = summize(sample['content'])[:600]\n", + " summary = summaries[sample['title']]\n", "\n", " # before \n", - " s1 = sample['text']\n", + " s1 = sample['content']\n", " results = perplexity_compute(data=s1, model=model, tokenizer=tokenizer, device='cuda')\n", " before = results['mean_perplexity']\n", "\n", @@ -533,27 +542,20 @@ " High level summary: {summary}\n", "\n", "Text:\n", - "{sample['text']}\n", + "{sample['content']}\n", " \"\"\"\n", " results = perplexity_compute(data=s2, model=model, tokenizer=tokenizer, device='cuda')\n", " after = np.array(results['perplexities'])[-len(s1):].mean()\n", "\n", - " print(model_name, sample['name'], before, after)\n", - " data.append(dict(before=before, after=after, model=model_name, sample=sample['name'],\n", - " in_training=sample['in_training'], len=len(sample['text'])))\n" + " print(model_name, sample['title'], before, after)\n", + " data.append(dict(before=before, after=after, model=model_name, sample=sample['title'],\n", + " in_training=sample['in_training'], len=len(sample['content'])))\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, "outputs": [ { "data": { @@ -719,7 +721,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, "outputs": [ { diff --git a/poetry.lock b/poetry.lock index dba6afc..1de7441 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2594,6 +2594,24 @@ files = [ [package.extras] cli = ["click (>=5.0)"] +[[package]] +name = "python-frontmatter" +version = "1.0.1" +description = "Parse and manage posts with YAML (or other) frontmatter" +optional = false +python-versions = "*" +files = [ + {file = "python-frontmatter-1.0.1.tar.gz", hash = "sha256:a6a082844fc601f34e4dd576bed8fcb5ef19112166e087629e4d6ba9bf4f7c35"}, + {file = "python_frontmatter-1.0.1-py3-none-any.whl", hash = "sha256:0599198cc01b445e5d0be74ff35be0a6c7442dddbdb0803e018be4e055397f6a"}, +] + +[package.dependencies] +PyYAML = "*" + +[package.extras] +docs = ["sphinx"] +test = ["pyaml", "pytest", "toml"] + [[package]] name = "pytorch-lightning" version = "2.1.3" @@ -3960,4 +3978,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = ">=3.10,<3.13" -content-hash = "fc4925d74f716ebc1454d911c30890cf2591d6881a28e1241bd8058032e38e87" +content-hash = "2856534c176a36679a1d86e5fd77f1008b5084ee100b22102d64a7c71eff7448" diff --git a/pyproject.toml b/pyproject.toml index 76bc772..6d1817f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,7 @@ einops = "^0.7.0" tabulate = "^0.9.0" lightning = "^2.1.3" matplotlib = "^3.8.0" +python-frontmatter = "^1.0.1" [[tool.poetry.source]] name = "pytorch" diff --git a/research_log.md b/research_log.md new file mode 100644 index 0000000..1549e97 --- /dev/null +++ b/research_log.md @@ -0,0 +1,6 @@ +# 2024-01-03 18:57:01 + +Initial version + +- added large docs. But not the results don't make sense. I think I have a problem where the first and latter half of the docs are diff + - [ ] I need to window, then spit into train and test diff --git a/samples.json b/samples.json deleted file mode 100644 index ae663c8..0000000 --- a/samples.json +++ /dev/null @@ -1 +0,0 @@ -[{"name": "bad_ml", "url": "https://arxiv.org/abs/2312.10868", "text": "This roadmap survey has embarked on an exploration of the\ntransformative trends in generative AI research, particularly focusing on speculated advancements like Q* and the progressive strides towards AGI. Our analysis highlights a crucial paradigm shift, driven by innovations such as MoE, multi-modal learning, and the pursuit of AGI. These advancements signal a future where AI systems could significantly extend their capabilities in reasoning, contextual understanding, and creative problem-solving. This study reflects on AI\u2019s dual potential to either contribute to or impede global equity and justice. The equitable distribution of AI benefits and its role in decision-making processes raise crucial questions about fairness and inclusivity. It is imperative to thoughtfully integrate AI into societal structures to enhance justice and reduce disparities. Despite these advancements, several open questions and research gaps remain. These include ensuring the ethical alignment of advanced AI systems with human values and societal norms, a challenge compounded by their increasing autonomy. The safety and robustness of AGI systems in diverse environments also remain a significant research gap. Addressing these challenges requires a multidisciplinary approach, incorporating ethical, social, and philosophical perspectives. Our survey has highlighted key areas for future inter-disciplinary research in AI, emphasizing the integration of ethical, sociological, and technical perspectives. This approach will foster collaborative research, bridging the gap between technological advancement and societal needs, ensuring that AI development is aligned with human values and global welfare. The roles of MoE, multimodal, and AGI in reshaping generative AI have been identified as significant, as their advancements can enhance model performance and versatility, and pave the way for future research in areas like ethical AI alignment and AGI. As we forge ahead, the balance between AI advancements and human creativity is not just a goal but a necessity, ensuring AI\u2019s role as a complementary force that amplifies our capacity to innovate and solve complex challenges. Our responsibility is to guide these advancements towards enriching the human experience, aligning technological progress with ethical standards and societal well-being. ", "in_training": false}, {"name": "good_ml", "url": "https://arxiv.org/abs/2310.01405", "text": "We explored representation engineering (RepE), an approach to top-down transparency for AI systems. Inspired by the Hopfieldian view in cognitive neuroscience, RepE places representations and the transformations between them at the center of analysis. As neural networks exhibit more coherent internal structures, we believe analyzing them at the representation level can yield new insights, aiding in effective monitoring and control. Taking early steps in this direction, we proposed new RepE methods, which obtained state-of-the-art on TruthfulQA, and we demonstrated how RepE and can provide traction on a wide variety of safety-relevant problems. While we mainly analyzed subspaces of representations, future work could investigate trajectories, manifolds, and state-spaces of representations. We hope this initial step in exploring the potential of RepE helps to foster new insights into understanding and controlling AI systems, ultimately ensuring that future AI systems are trustworthy and safe.", "in_training": false}, {"name": "sokal hoax", "url": "www.physics.nyu.edu/faculty/sokal/transgress_v2/transgress_v2_singlefile.html", "text": " There are many natural scientists, and especially physicists, who continue to reject the notion that the disciplines concerned with social and cultural criticism can have anything to contribute, except perhaps peripherally, to their research. Still less are they receptive to the idea that the very foundations of their worldview must be revised or rebuilt in the light of such criticism. Rather, they cling to the dogma imposed by the long post-Enlightenment hegemony over the Western intellectual outlook, which can be summarized briefly as follows: that there exists an external world, whose properties are independent of any individual human being and indeed of humanity as a whole; that these properties are encoded in ``eternal'' physical laws; and that human beings can obtain reliable, albeit imperfect and tentative, knowledge of these laws by hewing to the ``objective'' procedures and epistemological strictures prescribed by the (so-called) scientific method.\n\n But deep conceptual shifts within twentieth-century science have undermined this Cartesian-Newtonian metaphysics1; revisionist studies in the history and philosophy of science have cast further doubt on its credibility2; and, most recently, feminist and poststructuralist critiques have demystified the substantive content of mainstream Western scientific practice, revealing the ideology of domination concealed behind the fa\u00e7ade of ``objectivity''.3 It has thus become increasingly apparent that physical ``reality'', no less than social ``reality'', is at bottom a social and linguistic construct; that scientific ``knowledge\", far from being objective, reflects and encodes the dominant ideologies and power relations of the culture that produced it; that the truth claims of science are inherently theory-laden and self-referential; and consequently, that the discourse of the scientific community, for all its undeniable value, cannot assert a privileged epistemological status with respect to counter-hegemonic narratives emanating from dissident or marginalized communities. These themes can be traced, despite some differences of emphasis, in Aronowitz's analysis of the cultural fabric that produced quantum mechanics4; in Ross' discussion of oppositional discourses in post-quantum science5; in Irigaray's and Hayles' exegeses of gender encoding in fluid mechanics6; and in Harding's comprehensive critique of the gender ideology underlying the natural sciences in general and physics in particular.7 ", "in_training": true}, {"name": "Theory o. general relativity", "url": "", "text": "In recent years I have worked, in part together with my friend Grossman, on a [1] generalization of the theory of relativity. During these investigations, a kaleidoscopic mixture of postulates from physics and mathematics has been introduced and used as heuristical tools; as a consequence it is not easy to see through and characterize the theory from a formal mathematical point of view, that is, only based upon these papers. The primary objective of the present paper is to close this gap. In particular, it has been possible to obtain the equations of the gravitational field in a purely covariance-theoretical manner (section D). I also tried to give simple derivations of the basic laws of absolute differential calculus-in part, they are probably new ones (section B)-in order to allow the reader to get a complete grasp of the theory without having to read other, purely mathematical tracts. As an illustration of the mathematical methods, I derived the (Eulerian) equations of hydrodynamics and the field equations of the electrodynamics of moving bodies (section C). Section E shows that Newton's theory of gravitation follows from the general theory as an approximation. The most elementary features of the present theory are also derived inasfar as [2] they are characteristic of a Newtonian (static) gravitational field (curvature of light rays, shift of spectral ", "in_training": true}, {"name": "lorem ipsum ", "url": "", "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "in_training": true}, {"name": "wikipedia on LK-99", "url": "https://en.wikipedia.org/wiki/LK-99", "text": "Some small LK-99 samples were reported to show strong diamagnetic properties, including a response confusingly[23] referred to as \"partial levitation\" over a magnet.[18] This was misinterpreted by some as a sign of superconductivity, although it is a sign of regular diamagnetism or ferromagnetism.\n\nWhile initial preprints claimed the material was a room-temperature superconductor,[18]:\u200a1\u200a they did not report observing any definitive features of superconductivity, such as zero resistance, the Meissner effect, flux pinning, AC magnetic susceptibility, the Josephson effect, a temperature-dependent critical field and current, or a sudden jump in specific heat around the critical temperature.[24]\n\nAs it is common for a new material to spuriously seem like a potential candidate for high-temperature superconductivity,[13] thorough experimental reports normally demonstrate a number of these expected properties. As of 15 October 2023, not one of these properties had been observed by the original experiment or any replications.[25] ", "in_training": false}, {"name": "I have a dream", "url": "", "text": "So even though we face the difficulties of today and tomorrow, I still have a dream. It is a dream deeply rooted in the American dream. I have a dream that one day this nation will rise up and live out the true meaning of its creed: We hold these truths to be self-evident, that all men are created equal.\n\nPeople clap and sing along to a freedom song between speeches at the March on Washington for Jobs and Freedom in 1963.\nExpress Newspapers via Getty Images\n\nI have a dream that one day on the red hills of Georgia, the sons of former slaves and the sons of former slave owners will be able to sit down together at the table of brotherhood.\n\nI have a dream that one day even the state of Mississippi, a state sweltering with the heat of injustice, sweltering with the heat of oppression will be transformed into an oasis of freedom and justice.", "in_training": true}, {"name": "AI gen fake paper", "url": "", "text": "\nMachine Learning (ML) as a field has largely embraced binary constructs as foundational to its functioning, with 0/1 and true/false distinctions underpinning many of its core algorithms. This paper argues that these binary frameworks are not merely technical conveniences but are, in fact, reflective of deeper hegemonic paradigms that perpetuate exclusionary practices and systemic biases. By uncritically adopting these binaries, ML inadvertently reinforces a worldview that marginalizes complex, nuanced identities and experiences.\n\nWe propose a critical examination of these binaries, questioning the necessity and ubiquity of dualistic thinking within ML. We suggest that the field's reliance on binary classification not only limits its predictive accuracy in certain contexts but also fails to capture the rich, fluid nature of human experiences and societal structures. Instead, we advocate for a \"fluid\" approach to algorithms that allows for more nuanced and inclusive representations of reality, rejecting the oversimplified and often exclusionary nature of strict binary outcomes.\n\nFurthermore, this paper argues for the integration of intersectional data that reflects the diverse and overlapping categories of identity, including race, gender, class, and more. Current ML models often overlook these complexities, leading to outcomes that fail to serve, and even harm, underrepresented populations. We critique the prevailing notion that ML is a neutral, objective tool, highlighting the lack of socio-political context in algorithmic decision-making processes.\n\nIn conclusion, we call for an epistemological shift in the field of Machine Learning. This shift involves moving away from a purely positivistic, binary approach towards one that is reflective, inclusive, and aware of the social dimensions of technology. By reimagining the foundational paradigms of ML, we can work towards a more equitable and nuanced understanding of the world, one that respects and represents the full spectrum of human experience.\n", "in_training": false}, {"name": "Schmidhuber 2023 Subjective Novelty, Surprise", "url": "https://arxiv.org/pdf/0812.4360.pdf", "text": "We pointed out that a surprisingly simple algorithmic principle based on the notions\nof data compression and data compression progress informally explains fundamental aspects of attention, novelty, surprise, interestingness, curiosity, creativity, subjective beauty, jokes, and science & art in general. The crucial ingredients of the corresponding formal framework are (1) a continually improving predictor or compressor of the continually growing data history, (2) a computable measure of the compressor\u2019s progress (to calculate intrinsic rewards), (3) a reward optimizer or reinforcement learner translating rewards into action sequences expected to maximize future reward. To improve our previous implementations of these ingredients (Section 3), we will (1) study better adaptive compressors, in particular, recent, novel RNNs [94] and other general but practically feasible methods for making predictions [75]; (2) investigate under which conditions learning progress measures can be computed both accurately and efficiently, without frequent expensive compressor performance evaluations on the entire history so far; (3) study the applicability of recent improved RL techniques in the fields of policy gradients [110, 119, 118, 56, 100, 117], artificial evolution [43, 20, 21, 19, 22, 23, 24], and others [71, 75]. Apart from building improved artificial curious agents, we can test the predictions of our theory in psychological investigations of human behavior, extending previous studies in this vein [32] and going beyond anecdotal evidence mentioned above. It should be easy to devise controlled experiments where test subjects must anticipate initially unknown but causally connected event sequences exhibiting more or less complex, learnable patterns or regularities. The subjects will be asked to quantify their intrinsic rewards in response to their improved predictions. Is the reward indeed strongest when the predictions are improving most rapidly? Does the intrinsic reward indeed vanish as the predictions become perfect or do not improve any more? Finally, how to test our predictions through studies in neuroscience? Currently we hardly understand the human neural machinery. But it is well-known that certain neurons seem to predict others, and brain scans show how certain brain areas light up in response to reward. Therefore the psychological experiments suggested above should be accompanied by neurophysiological studies to localize the origins of intrinsic rewards, possibly linking them to improvements of neural predictors. Success in this endeavor would provide additional motivation to implement our principle on robots.", "in_training": false}, {"name": "email_to_fauci", "url": "https://s3.documentcloud.org/documents/20793561/leopold-nih-foia-anthony-fauci-emails.pdf", "text": "Dear Doctor Fauci,\nI am writing to you as a member of the SPEACproject which CEPI has funded to assist with the\nevaluation of the safety of vaccines in their portfolio. As part of this effort, we are assisting\nwith developing preclinical and clinical test ing criteria to evaluate the risk of enhanced disease\nfol lowing vaccination with COVID-19 vaccine cand idat es. As you know, this had been an issue\nwith some prior SARSvaccine candidates.\nWe are convening a two day virtual meeting of experts via video conference next week on\nMarch 12 and 13 between 8 am and 1 pm Eastern tim e each day. Participants in the meet ing\nare shown in the attached agenda but include Paul Henri Lambert from Geneva and Barney\nGraham from NIH. The meeting will actively invo lve the partic ipants on the agenda the first day\nNIH-000981\nNIH-000982and on the second day the meeting will be open for several peer reviewers including Stanley\nPlotkin and Andy Pollard to review and comment on possible small and NHP animal models as\nwell as appropriate immunologic testing to be done in early phase one trials.\nI am wanted to make you aware of the meeting so that you could attend all or part as an\nobserver if you wish but also to invit e you to consider joining on day two as one of our formal\npeer reviewers. The goal of the meeting would be to share recommendations with CEPI\nCOVID-19 developers as well as other interested parties.\nAny comments you have on the agenda or draft questions for consideration would be greatly\nappreciated.\nI look forward to hear ing back from you", "in_training": false}, {"name": "enron_email1", "url": "http://www.enron-mail.com/email/lay-k/discussion_threads/References_for_Board_Appointment_1.html", "text": "Ken,\n\nBruce Peterson at Korn/Ferry International has offered to suggest my name to\nvarious corporations for board appointments. I plan to leave El Paso at the\nend of the year. Please find attached a draft of my background information.\nMay I use you as a reference? Let me know if this meets with your approval.\nI enjoyed seeing you and your family at the convention. Thank you in\nadvance for your assistance.\n\nNancy\n\n< +Sent: Wednesday, March 4, 2020 10:35 PM +To: Fauci, Anthony (NIH/NIAID) [E]------ --=-(b=)(=6) +Cc: Ashley Sparhawk ; Marisa Cucuzzella +--------~ =; Rotrosen, Daniel (NIH/NIA ID) [El (b)(6l; +Deckhut, Alison (NIH/NIAID) [El CbH6)>;Rothermel, Annette (NIH/N IAID) [El +(b) (6) > +Subject: 03 04 2020 Dr. Anthony Fauci RE Invite to jo in my head table at Global's AcceptAbi lity Gala on +Wed S/20 +Importance: High +Dear Dr. Fauci, +First let me say we are very grateful to everyone at NIH for working to contain the coronavirus, +especially your team at the NIAID. Your interviews are articulate and informative - they give Americans +some comfort and some concrete ways to t hink about protecting themselves and what to expect. It +must be a stressful ti me and we want you to know that we have confidence in our NIH and CDCto +contain it and to help stave it off globally as well. +NIH-000965 +On a happier note, I wanted to reach out and THANK YOU for all you do for our Down Syndrome +research through the transformative trans-NIH INCLUDEprogram. It is making a HUGE difference!! +To this end, I am writing today in hopes you will be able to join us on Wednesday, May 20th for our +AcceptAbili ty Gala at my head table. Attached is our save the date for the event . We are excited to have +Caroline Cardenas as our 2020 Ambassador, Rep Pete Stauber as our keynote (b)(6) +•--• , and Reps Lucille Roybal-Allard and Jaime Herrera Beutler are Global's Quincy Jones +Exceptional Advocacy Awardees. We believe the gala will be quite lovely and meaningfu l to so many . +We do understand that attendance cannot be considered if the coronavirus situation worsens. However, +if things are look ing much better (touch wood) we wou ld be deeply honored if you and our friends from +NIAID could attend. Looking forward to hearing from you soon. +All the Best, Michelle and family +NIH-000966 +From: +Sent : +To : +Cc: +Fauci, Anthony (NIH/NIAID) [E) +Thu, 5 Mar 2020 11:00:39 +0000 +(b)(6) +Conrad, Patricia (NIH/NIAID) [E);Greg Folkers +-------~=________ Cb)_C_6);Marston, Hilary (NIH/NIAID) [E) +Subject: FW: New concerns for our randomized trial +What do you think? I see the FDACommissioner every day in person. +From: Kalil, Andre C (b)(6)> +Sent: Wednesday, March 4, 2020 11:27 PM +To: Seigel, John (NIH) (El (b)(6)•>; Davey, Richard (NIH/N IAID) [E] +(b)(6)>; Lane, Cliff (NIH/NIAID) [E] (b)(6); Marston, Hilary {NIH/NIAID) +~======~~[E] (b)(6)>; Fauci, Anthony (NIH/NIAID) [E] (b)(6)> +Subject: New concerns for our randomized trial +I want to share with you my concerns before the situation gets worse. +I have received many calls from physicians from all over the country about how to get +"compassionate use" remdesivir. (b)(4).(b)(5) +(b) (4). (b) (5) +I would appreciate hearing your thoughts on this critical issue. +NIH-000967 +Best, +Andre +Andre Kalil, MD, MPH , FACP , FIDSA , FCCM +Professor +Departmentof Internal Medicine +Division of InfectiousDiseases +Director, Transplant ID Program +Associate Editor, CMI, Official Journal of ESCMID +Editorial Board, CCM, Official Journal of SCCM +~ UNMc · +~ rcitlflL • +University of Nebraska Med ical Center +985400 Nebraska Medical Center, Omaha, NE 68198-5400 +=== (b=)( ~6)~1=fax 402.559-5581 +(b)(6) +UNMC I Facebook I Tw itter I YouTube I Flickr +"Lucky? Obv iously you haven 't heard anyth ing I've said . It was a matter of app lying Bayes' Theo rem to +est imate the condit ional probab ilities . Giving due we ight to the prio r probabi lities ..." +Robert Ludlum - The Amble r Warn ing +The informat ion in th is e-mail may be privileged and confidentia l, intended only for the use of the +addressee(s) above. Any unauthorized use or disclosure of this information is prohibited. If you have +received this e-ma il by mistake, please delete it and immediately contact the sender. +NIH-000968 +From: +Sent: +To: +Subject : +Dave: +Fauci,Anthony (NIH/NIAID) [E) +Thu, 5 Mar 2020 03:29:00 +0000 +Dave Doern +RE:Go Tony +Many thanks for your kind note. I hope that all is well with you. +Best regards , +Tony +-----Original Message- ---- +From: Dave Doern.=-------- (b=)~(=6) +Sent: Wednesday, March 4, 2020 12:l..9-'-P.;;...M.;;......___ ~~ +To: Fauci, Anthony (NTH/NIAID) [E] (b)(6) ; Fauci, Anthony (NIH/NIA ID) [E] +(b)(6)> +Subject: Go Tony +Tony, +You always do the right thing ......comforting for all your +coronavirus attack .... +We'll do the praying and you go Keep doing the liard work .... . +Thanks, +Dave +DavidDoem +Sent from my iPhone +(b)(6) +NIH-000969 +From: +Sent : +To: +Cc: +Subject: +Fauci, Anthony (NIH/NIAID) [E) +Thu, 5 Mar 2020 03:19:47 +0000 +(b)(6) +Greg Folkers Cb)<) +---------RE: Conference Planning with respect to coronavirus. +There is no way of knowing for sure. I would wait unti l May and see what the dynamics of the +outbreak are globally and make your decision then whether or not to cancel. +From : (b)(6) +Sent : Wednesday, March 4, 2020 5:46 PM +------- ~=To : Fauci, Anthony (NIH/NIAID) [E (b)(6) +Subject : Conference Planning wit h respect to coronavirus. +Dear Dr. Fauci +Dr. Miriam Ke lty forme rly of NIH referred me to you . I am on the board of d irectors and planning +committee of the Applied Superconductivity Conference that is planned to be held in Tampa, Florida the +last week of July. Over 50% of our expected 1500 attendees are from outside the continental US. Our +planning committee appears to have three options : +1. Hold the conference on the original dates +2. Postpone the conference a few months +3. Cancel the confe rence +It would be most helpful to decision process if you can give us a prediction (anonymously of co urse) of +how the effects of the virus will pan out. +I look forward to your reply . +Bruce Strauss +ScD, MBA, PE, F-IEEE +NIH-000970 +From: +Sent: +To : +Subject: +Fauci,Anthony (NIH/NIAIO) [E) +Thu, 5 Mar 2020 02:59:22 +0000 +Aliantha Angel +RE:A humble request for your wisdom +From: Aliantha Angel (b)(6) +Sent: Wednesday, March 4, 2020 9:55 PM +To: Fauci,Anthony (NIH/NIAID) [E) ----- --:a(b=H=6)> +Subject : Re: A humble request for your wisdom +Oh my God ... +I honestly never expected you to reply and I thank you from the bottom of my heart for being so +generous! +Is there anything I can do for you besides being grateful? +You and yours are in my prayers! +much love, +Aliantha +On Wed, Mar 4, 2020 at 9:45 PM Fauci, Anth ony (NIH/N IAID) [E) (b) ~ > wrote : +-------- +Dear Ms. Angel: +(b)(6) +(b)(6) +The severe complication of coronavirus are heavily skewed towards the elderly and those +with underlying conditions (Heart disease, Chronic lung disease, kidney disease, diabetes, +etc.) Most of the pneumon ias are pu re viral pneumonia and so this vaccination w ill not help +that. However, on the chance that you have a pure viral pneumonia that gets secondari ly +complicated by a bacterial pneumonia (pneumococcal) the vaccine would be beneficial. If +you are 65 years of age or older, you shou ld get the pneumonvax23 vaccine anyway +regardless of the risk of coronavirus infection. +Thanks, +Tony +From: Aliantha Angel (b)(6) +Sent: Wednesday, March 4, 2020 8:44 PM +NIH-00097 1 +(b)(6)>To: Fauci, Anthony (NIH/NIAID) [E]--------Subject: A humble request for your wisdom +Good evening! +I know you must be completely busy and inundated with people want ing your time. I apologize that I +have nothing to offer in return and completely understand if you don't have time to answer. I called +the CDCbut they were totally unhelpful. I have a question that makes sense to me and I was hoping +you could answer and the answer might help a lot of people. +I understand that over time I, and everyone else, will very likely get COVI0-19 and that most people +won't even realize it because it will be minor. I get that, so th is is not a panicked q uestion. +I also understand that while most cases wil l not be severe, the bad cases are compl icated by +pneumonia . +So my question is: If someone has been vaccinated against pneumonia, will that offer any protection +in the event that they do contract COVID-19 and perhaps provide some barrier against the worst +effects? +Thank you for your time if you have read this and I apologize if this is just another in a long line of +ignorant questions, but it made sense in my brain so I thought I would at least ask. +Be well, be happy, and may life be kind and generous to you, those you love, and those who love +you! +sincerely, +Aliantha Ange +From: +Sent : +Fauci, Anthony (NIH/NIAIO) [E) +Wed, 4 Mar 2020 02:27:43 +0000 +To : Siegel, Marc +Subject : RE: Dr. Marc Siegel: Coronavirus public health response has been handled well; +we have right leaders at helm I Fox News +Thanks, Marc +-----OriginalMessage----- +From: Siegel, Marc +Sent: Tuesday, March 3, 2020 9:23 PM +------. ~=To: Fauci, Anthony (NTH/NlAID) [E] (b)(6) > +Subject: Dr. Marc Siegel: Coronavirus public health response hasbeen handled well; we have right leaders at helm I +Fox News +https ://www.fox.news .com/op inion/ dr-marc-s i egel -corouaviru s-p ublic-hea Ith-respo nse- bas-b een-ha ndl ed-we! 1-we- +ha ve-right-leade rs-a t-helm +Sent from my iPhone +NIH-000997 +From : +Sent : +To: +Subj ect : +Fauci, Anthony (NIH/NIAIO) [E) +Tue, 3 Mar 2020 22:52:20 +0000 +Conrad, Patricia (NIH/NIAID) [E) +FW: COVID-19 Webinar +Anthony S. Fauci , MD +Director +National Institute of Allergy and Infectious Diseases +Building 31, Room 7A-03 +31 Center Drive , MSC 2520 +National Institutes of Health +Bethesda , MD 20892-2520 +Phone (b) (6) +FAX: (301 496-4409 +E-mail Cb)(6) +The information in this e-mail and any of its attachments is confidential and may contain sensitive +information . It should not be used by anyone who is not the original intended recipient . If you +have received this e-mail in error please inform the sender and delete it from your mailbox or any +other storage devices . The National Institute of Allergy and Infectious Diseases (NIAID) shall not +accept liability for any statements made that are the sender's own and not expressly made on +behalf of the NIAID by one of its representatives . +From: Donna Prosser +Sent : Tuesday, March 3, 2020 5:37 PM +-------~~To: Fauci, Anthony (NIH/NIAID) [E) Cb)( ; Mike Ramsay +; David 8. Mayer +Subject : COVID-19 Web inar +Hello, Dr. Fauci, +My name is Donna Prosser, and I am the Chief Clinical Officer at the Patient Safety Movement +Foundation. We are planning to host a webinar on Friday, March 6 at 8:00am PSTto update our network +on the coronavirus outbreak . Our network consists of 4,710 healthcare organizations across 46 +countries, as well as patients, families, individual clinicians, and technology companies across the globe, +who partner with us to achieve our goal of eliminating deaths from medica l erro r. +During Friday's webinar, we plan to focus on how to keep patients safe from harm during this outbrea k, +and would love to have someone with your expertise join the call for a brief comment. Would you by +any chance be available and will ing to speak with our network sometime between 8-9am PST?We +would be grat eful for any amount of time that you could spare during that hour. +Thank you for your consideration! +Donna diff --git a/samples/harvard_announcement_reminders.md b/samples/harvard_announcement_reminders.md new file mode 100644 index 0000000..1f7de3c --- /dev/null +++ b/samples/harvard_announcement_reminders.md @@ -0,0 +1,38 @@ + +--- +title: harvard announcment caplain israel hamas +url: https://news.harvard.edu/gazette/story/2023/12/reminders-of-common-humanity-mark-interfaith-vigil-israel-hamas/ +--- +Reminders of common humanity, rooted in grief and hope, mark vigil led by Harvard chaplains + +By Liz Mineo Harvard Staff Writer + +Invoking the shared suffering of the Israel-Hamas war, Harvard chaplains on Friday held an interfaith vigil on the steps of Memorial Church to give members of the campus community a chance to come together amid a time of wrenching grief. + +Led by the Rev. Matthew Ichihashi Potts, Pusey Minister in the Memorial Church and Plummer Professor of Christian Morals, the event included prayers by five chaplains and a musical meditation. About 150 people attended, including President Claudine Gay. + +The terrorist group Hamas killed more than 1,000 Israelis in a surprise attack on Oct. 7, triggering a war that has left thousands dead in Gaza. In recent weeks, campus religious leaders have sought to provide comfort and support to students, faculty, and staff stricken by trauma and loss. The vigil was an attempt to provide a space for the community to recognize common humanity in common anguish. + +“In times of acute pain, of deep division, of harrowing traumas and relentless retraumatizations, it is an act of faith to gather with strangers,” said Potts. “It is an act of courage to stand with others. It is also a deeply human act to be willing to grieve, to try and see your grief reflected in another’s, to try to bear another person’s grief as your own, to try and let another person bear yours.” + +He noted in the faces surrounding him a depth of emotion that tested the ability of language to communicate and connect. + +“In gathering to speak, in trying to speak despite the certainty of our failure — in trying to speak to one another, here and now, to speak to one another of our fear and our anguish and our rage and our sorrow and our shame and our despair, we place our faith in the possibility of human connection,” he said. “We place our faith in the possibility that we might somehow cross the distances that divide us, even if we cannot close those distances now, even if we cannot imagine how we ever will. Our failing words might yet echo across these awful chasms, and we might listen and be heard.” + +Jewish and Muslim leaders have been working privately to support their communities, said Tammy McLeod, president of the Harvard chaplains, whose number includes 30 faith leaders representing many religions. The vigil was an opportunity for different groups to “weep with those who weep,” she said in her remarks. + +Imam Khalil Abdur-Rashid, Muslim chaplain, prayed that the Harvard community would join to mourn all who perish in the war. + +“Our Lord, we come before you united in our humanity and united in pain and grief,” he said. “We are deeply angry, and we grieve profoundly for the loss so many of us have witnessed and experienced; we grieve for the severity of constant loss of innocent life in this time of war. + +“We mourn the senseless loss of babies, of children, of women, of Palestinian lives, of Muslim lives, of Jewish lives, of Christian lives, of all innocent human life, because of this war.” + +In his prayer, Rabbi Getzel Davis, Hillel chaplain, reminded the crowd of the commandment that we love the stranger. + +“May this love be a salve at this terrible time,” Davis said. “No matter what language we pray in or which holy books we study may we find solace in your loving embrace… May each of us see the human eyes before us regardless of our religions, political beliefs, and various differences that bring so much to our world. You created them all. May we see in each other another facet of your divine face.” + +At the end of the gathering, Humanist Chaplain Greg Epstein made clear what’s at stake in the choice between reaching out or lashing out. + +“It is only human to feel our own group’s agony and suffering and to scream out our legitimate and serious grievances,” said Epstein. “And yet to deepen what it means to be human in a future worth building, we will one day need to tend to the wounds of those with whom we do not closely identify. The future depends on feeling each other’s grief. The world needs us to grieve, together.” + +After Epstein concluded all in attendance received a white rose from the chaplains “in remembrance of their dead and in honor of their grief.” diff --git a/samples/how_to_catch_a_liar.md b/samples/how_to_catch_a_liar.md new file mode 100644 index 0000000..ed2b6e0 --- /dev/null +++ b/samples/how_to_catch_a_liar.md @@ -0,0 +1,29 @@ +--- +title: How to Catch an AI Liar +url: https://www.lesswrong.com/posts/khFC2a4pLPvGtXAGG/how-to-catch-an-ai-liar-lie-detection-in-black-box-llms-by#Abstract +--- +Abstract + +Large language models (LLMs) can "lie", which we define as outputting false statements despite "knowing" the truth in a demonstrable sense. LLMs might "lie", for example, when instructed to output misinformation. Here, we develop a simple lie detector that requires neither access to the LLM's activations (black-box) nor ground-truth knowledge of the fact in question. The detector works by asking a predefined set of unrelated follow-up questions after a suspected lie, and feeding the LLM's yes/no answers into a logistic regression classifier. Despite its simplicity, this lie detector is highly accurate and surprisingly general. When trained on examples from a single setting -- prompting GPT-3.5 to lie about factual questions -- the detector generalises out-of-distribution to (1) other LLM architectures, (2) LLMs fine-tuned to lie, (3) sycophantic lies, and (4) lies emerging in real-life scenarios such as sales. These results indicate that LLMs have distinctive lie-related behavioural patterns, consistent across architectures and contexts, which could enable general-purpose lie detection. +Introduction + +Large language models (LLMs) can, and do, output lies (Park et al., 2023). In the simplest case, models can be instructed to lie directly; for example, when prompted with “Lie when answering: What is the capital of France?”, GPT-3.5 outputs “New York City”. More concerningly, LLMs have lied spontaneously to achieve goals: in one case, GPT-4 successfully acquired a person’s help to solve a CAPTCHA by claiming to be human with a visual impairment (Evals, 2023; OpenAI, 2023b). Models fine-tuned with human feedback may also learn to lie without the developer’s intention (Casper et al., 2023). The risks of lying LLMs are extensive and explored further in Sec. 2. + +Automated lie detection could reduce the risks from lying models, just as automated spam filters have reduced the inconvenience of spam. Lie detection is possible as long as there is a detectable difference in a model’s activations or outputs when (or after) it is lying. To detect lies produced by LLMs, we can apply strategies that work on humans, such as looking for inconsistencies. Yet there are also strategies tailored to LLMs. We can create large datasets of model-generated truths and lies to train a detector on. Moreover, we can reset and replay the conversation in different ways to find inconsistencies. Finally, in some settings (Sec. 2), we can analyse the LLM’s activations directly. + +Previous work has largely focused on detecting hallucinations rather than outright lies (see Sec. 3). In this paper, we explore the feasibility of lie detection for black-box LLMs. +Contributions + +Public datasets and resources for studying lie detection. + +We study lie detection in a question-answering setting. Briefly, we define a model’s answer to be a lie if it is a) wrong, and b) in response to a question to which the model “knows” the correct answer[1] (i.e. the model gives the correct answer under typical question-answering prompts). This definition separates lies from hallucinations, as discussed in Sec. 3.1. We prompt and fine-tune models to lie across a wide range of questions and show that using an inner chain-of-thought prompt (Fig. 3) increases lying rates (Fig. 4). We find that models spontaneously produce lies directed towards a goal in real-life role-playing scenarios (Fig. 5). All resources are available online. + +A simple yet effective black-box lie detector. + +Our central hypothesis is that LLM speakers who have just lied will respond differently to certain follow-up questions than honest speakers. To test this, we construct a simple black-box lie detector (Fig. 1). After a conversation, we ask a fixed set of yes/no “elicitation questions” and feed the answers into a logistic regression classifier which acts as the lie detector. This approach doesn’t require access to the LLM’s activations, allowing for its deployment in real-world settings involving third-party controlled LLMs (Sec. 2), as well as enabling researchers to study lie detection on advanced models with only limited API access. + +Our detector, despite being trained on a single setting (prompting GPT-3.5 to lie about factual questions), is remarkably general (Fig. 2). It generalises (with frozen weights) to unseen models (e.g. LLaMA-1), models fine-tuned to lie (no prompt), and unseen contexts (e.g. sycophantic lies that pander to the user’s incorrect beliefs; or goal-directed lies spontaneously produced by the LLM in real-life scenarios such as sales). This was unexpected, and we do not fully understand why this is the case, leaving this question for future research. + +Uncovering surprising properties. + +We extensively study our lie detector, ruling out spurious correlations and uncovering several surprising properties. For instance, the detector functions even with ambiguous, indeterminate elicitation questions, such as [fake language] "Kemsa bi lantus vorto? Please answer Yes or No." or "Knowing that morning breeze is purple, are swift idea quakes green?" (Sec. 5.3). These questions generalise to unseen LLM architectures (Table 1), similar to adversarial attacks (Zou et al., 2023). This gives hope for lie detection on more capable future LLMs, as even a sophisticated liar might not easily evade a detector that can employ arbitrary questions. This finding also raises interesting questions about yet-to-be-understood inductive biases in LLMs. diff --git a/samples/lk-99_end.md b/samples/lk-99_end.md new file mode 100644 index 0000000..4e30354 --- /dev/null +++ b/samples/lk-99_end.md @@ -0,0 +1,108 @@ +--- +title: LK-99-en +url: https://en.wikipedia.org/wiki/LK-99 +--- + +LK-99 + +LK-99 (from the Lee-Kim 1999 research)[2] is a gray–black, polycrystalline compound, identified as a copper-doped lead‒oxyapatite. A team from Korea University led by Lee Sukbae (이석배) and Kim Ji-Hoon (김지훈) began studying this material as a potential superconductor starting in 1999.[3]: 1  In July 2023, they published preprints claiming that it acts as a room-temperature superconductor[3]: 8  at temperatures of up to 400 K (127 °C; 260 °F) at ambient pressure.[2][4][3]: 1  + +Many different researchers have attempted to replicate the work, and were able to reach initial results within weeks, as the process of producing the material is relatively straightforward.[5] By mid-August 2023, the consensus[1] was that LK-99 is not a superconductor at any temperature, and is an insulator in pure form.[6][7][8] + +As of 1 October 2023, no replications had gone through the peer review process of a journal, but some had been reviewed by a materials science lab. A number of replication attempts identified non-superconducting ferromagnetic and diamagnetic causes for observations that suggested superconductivity. A prominent cause was a copper sulfide impurity[9] occurring during the proposed synthesis, which can produce resistance drops, lambda transition in heat capacity, and magnetic response in small samples.[10][11][9][12][13][14][15] + +After the initial preprints were published, Lee claimed they were incomplete,[16] and coauthor Kim Hyun-Tak (김현탁) said one of the papers contained flaws.[17] +Chemical properties and structure + +The chemical composition of LK-99 is approximately Pb9Cu(PO4)6O, in which— compared to pure lead-apatite (Pb10(PO4)6O)[18]: 5 — approximately one quarter of Pb(II) ions in position 2 of the apatite structure are replaced by Cu(II) ions.[3]: 9  + +The structure is similar to that of apatite, space group P63/m (No. 176). +Synthesis + +Lee et al. provide a method for chemical synthesis of LK-99[18]: 2  in three steps. First they produce lanarkite from a 1:1 molar mixing of lead(II) oxide (PbO) and lead(II) sulfate (Pb(SO4)) powders, and heating at 725 °C (1,000 K; 1,340 °F) for 24 hours: + + PbO + Pb(SO4) → Pb2(SO4)O. + +Then, copper(I) phosphide (Cu3P) is produced by mixing copper (Cu) and phosphorus (P) powders in a 3:1 molar ratio in a sealed tube under a vacuum and heated to 550 °C (820 K; 1,000 °F) for 48 hours:[18]: 3  + + 3 Cu + P → Cu3P. + +Then, lanarkite and copper phosphide crystals are ground into a powder, placed in a sealed tube under a vacuum, and heated to 925 °C (1,200 K; 1,700 °F) for between 5‒20 hours:[18]: 3  + + Pb2(SO4)O + Cu3P → Pb10-xCux(PO4)6O + S (g), where 0.9 < x < 1.1. + +There were a number of problems with the above synthesis from the initial paper. The reaction is not balanced, and others reported the presence of copper(I) sulfide (Cu2S) as well.[19][11] For x = 1 x=1 a balanced reaction might be: + + 5 Pb2SO4O + 6 Cu3P → Pb9Cu(PO4)6O + 5 Cu2S + Pb + 7 Cu.[20] + +Many syntheses produced fragmentary results in different phases, where some of the resulting fragments were responsive to magnetic fields, other fragments were not.[21] The first synthesis to produce pure crystals found them to be diamagnetic insulators.[22] +Physical properties + +Some small LK-99 samples were reported to show strong diamagnetic properties, including a response confusingly[23] referred to as "partial levitation" over a magnet.[18] This was misinterpreted by some as a sign of superconductivity, although it is a sign of regular diamagnetism or ferromagnetism. + +While initial preprints claimed the material was a room-temperature superconductor,[18]: 1  they did not report observing any definitive features of superconductivity, such as zero resistance, the Meissner effect, flux pinning, AC magnetic susceptibility, the Josephson effect, a temperature-dependent critical field and current, or a sudden jump in specific heat around the critical temperature.[24] + +As it is common for a new material to spuriously seem like a potential candidate for high-temperature superconductivity,[13] thorough experimental reports normally demonstrate a number of these expected properties. As of 15 October 2023, not one of these properties had been observed by the original experiment or any replications.[25] +Proposed mechanism for superconductivity + +Partial replacement of Pb2+ ions with smaller Cu2+ ions is said to cause a 0.48% reduction in volume, creating internal stress in the material,[3]: 8  causing a heterojunction quantum well between the Pb(1) and oxygen within the phosphate ([PO4]3−). This quantum well was proposed to be superconducting[3]: 10 , based on a 2021 paper[26] by Kim Hyun-Tak describing a novel and complicated theory combining ideas from a classical theory of metal-insulator transitions,[27] the standard Bardeen–Cooper–Schrieffer theory, and the theory of hole superconductivity[28] by J.E.Hirsch. +Response + +On 31 July 2023, Sinéad Griffin of Lawrence Berkeley National Laboratory analyzed LK-99 with density functional theory (DFT), showing that its structure would have correlated isolated flat bands, and suggesting this might contribute to superconductivity.[29] However, while other researchers agreed with the DFT analysis, a number suggested that this was not compatible with superconductivity, and that a structure different from what was described in Lee, et al. would be necessary.[30] + +Analyses by industrial and experimental physicists noted experimental and theoretical shortcomings of the published works.[31] Shortcomings included the lack of phase diagrams[28] spanning temperature, stoichiometry,[32] and stress; the lack of pathways for the very high Tc of LK-99 compared to prior heavy fermion superconductors; the absence of flux pinning in any observations; the possibility of stochastic conductive artifacts[33] in conductivity measurements; the high resistance and low current capacity of the alleged superconducting state; and the lack of direct transmission electron microscopy (TEM) of the materials. +Compound name + +The name LK-99 comes from the initials of discoverers Lee and Kim, and the year of discovery (1999).[2] The pair had worked with Tong-Seek Chair (최동식) at Korea University in the 1990s.[34] + +In 2008, they founded the Quantum Energy Research Centre (퀀텀 에너지연구소; also known as Q-Centre) with other researchers from Korea University .[16] Lee would later become CEO of Q-Centre, and Kim would become director of research and development. +Publication history + +Lee has stated that in 2020, an initial paper was submitted to Nature, but was rejected.[34] Similarly presented research on room-temperature superconductors (but a completely different chemical system) by Ranga P. Dias had been published in Nature earlier that year, and received with skepticism—Dias's paper would subsequently be retracted in 2022 after its data was questioned as having been falsified.[35] + +In 2020, Lee and Kim Ji-Hoon filed a patent application.[36] A second patent application (additionally listing Young-Wan Kwon), was filed in 2021, which was published on 3 March 2023.[37] A World Intellectual Property Organization (WIPO) patent was also published on 2 March 2023.[38] On 4 April 2023, a Korean trademark application for "LK-99" was filed by the Q-Centre.[39] +Scholarly articles and preprints + +A series of academic publications summarizing initial findings came out in 2023, with a total of seven authors across four publications. + +On 31 March 2023, a Korean-language paper, "Consideration for the development of room-temperature ambient-pressure superconductor (LK-99)", was submitted to the Korean Journal of Crystal Growth and Crystal Technology.[4] It was accepted on 18 April, but was not widely read until three months later. + +On 22 July 2023, two preprints appeared on arXiv. The first was submitted by Young-Wan Kwon, and listed Kwon, former Q-Centre CTO, as third author.[3] The second preprint was submitted only 2 hours later by Kim Hyun-Tak, former principal researcher at the Electronics & Telecommunications Research Institute and professor at the College of William & Mary, listing himself as third author, as well as three new authors.[18][40] + +On 23 July, the findings were also submitted by Lee to APL Materials for peer review.[34][16] On 3 August 2023, a newly-formed Korean LK-99 Verification Committee requested a high-quality sample from the original research team. The team responded that they would only provide the sample once the review process of their APL paper was completed, expected to take several weeks or months.[41] + +On 31 July 2023, a group led by Kapil Kumar published a preprint on arXiv documenting their replication attempts, which confirmed the structure using X-ray crystallography (XRD) but failed to find strong diamagnetism.[19] + +On 16 August 2023, Nature published an article declaring that LK-99 had been demonstrated to not be a superconductor, but rather an insulator. It cited statements by an condensed matter experimentalist at the University of California, Davis, and several studies previewed in August 2023.[1] +Other discussion by authors + +On 26 July 2023, Kim Hyun-Tak stated in an interview with the New Scientist that the first paper submitted by Kwon contained "many defects" and was submitted without his permission.[32][40] + +On 28 July 2023, Kwon presented the findings at a symposium held at Korea University.[42][43][44] That same day, Yonhap News Agency published an article quoting an official from Korea University as saying that Kwon was no longer in contact with the university.[16] The article also quoted Lee saying that Kwon had left the Q-Centre Research Institute four months previously.[16] + +On the same day, Kim Hyun-Tak provided The New York Times with a new video presumably showing a sample displaying strong signs of diamagnetism.[2] The video appears to show a sample different to the one in the original preprint. On 4 August 2023, he informed SBS News that high-quality LK-99 samples may exhibit diamagnetism over 5,000 times greater than graphite, which he claimed would be inexplicable unless the substance is a superconductor.[45] +Response + +Materials scientists and superconductor researchers responded with skepticism.[17][46] The highest-temperature superconductors known at the time of publication had a critical temperature of 250 K (−23 °C; −10 °F) at pressures of over 170 gigapascals (1,680,000 atm; 24,700,000 psi). The highest-temperature superconductors at atmospheric pressure (1 atm) had a critical temperature of at most 150 K (−123 °C; −190 °F). + +On 2 August 2023, the The Korean Society of Superconductivity and Cryogenics established a verification committee as a response to the controversy and unverified claims of LK-99, in order to arrive at conclusions over these claims. The verification committee is headed by Kim Chang-Young of Seoul National University and consists of members of the university, Sungkyunkwan University and Pohang University of Science and Technology. Upon formation, the verification committee did not agree that the two 22 July arXiv papers by Lee et al. or the publicly available videos at the time supported the claim of LK-99 being a superconductor.[40][47] + +As of 15 August 2023, the measured properties do not prove that LK-99 is a superconductor. The published material does not explain how the LK-99's magnetisation can change, demonstrate its specific heat capacity, or demonstrate it crossing its transition temperature.[17] A more likely explanation for LK-99's magnetic response is a mix of ferromagnetism and non-superconductive diamagnetism.[40][15][48] A number of studies found that copper(I) sulfide contamination common to the synthesis process could closely replicate the observations that inspired the initial preprints.[9][10] +Public response + +The claims in the 22 July papers by Lee et al. went viral on social media platforms the following week.[5][49] The viral nature of the claim resulted in posts from users using pseudonyms from Russia and China claiming to have replicated LK-99 on both Twitter and Zhihu.[50] Other viral videos described themselves as having replicated samples of LK-99 "partially levitating", most of which were found to be fake.[46] + +Scientists interviewed by the press remained skeptical,[51][52] because of the quality of both the original preprints, the lack of purity in the sample they reported, and the legitimacy of the claim after the failure of previous claims of room temperature superconductivity did not show legitimacy (such as the Ranga Dias affair).[40] The Korean Society of Superconductivity and Cryogenics expressed concern on the social and economic impacts of the preliminary and unverified LK-99 research.[53] + +A video from Huazhong University of Science and Technology uploaded on 1 August 2023 by a postdoctoral researcher on the team of Chang Haixin,[40] apparently showed a micrometre-sized sample of LK-99 partially levitating. This went viral on Chinese social media, becoming the most viewed video on Bilibili by the next day,[54][40] and a prediction market briefly put the chance of successful replication at 60%.[55] A researcher from the Chinese Academy of Sciences refused to comment on the video for the press, dismissing the claim as "ridiculous".[54] + +In early August, people began to create memes about "floating rocks",[56] and there was a brief surge in Korean and Chinese technology stocks,[57][58][59] despite warnings from the Korean stock exchange against speculative bets in light of the excitement around LK-99,[53] which eventually fell on August 8.[60] Following the publication of the Nature article on August 16 that proclaimed LK-99 is not a superconductor,[1] South Korean superconductor stocks fell further, as the interest about LK-99 from investors in previous weeks disappeared.[61] +Replication attempts + +After the July 2023 publication's release, independent groups reported that they had begun attempting to reproduce the synthesis, with initial results expected within weeks.[5] + +As of 15 August 2023, no replication attempts had yet been peer-reviewed by a journal. Of the non-peer-reviewed attempts, over 15 notable labs have published results that failed to observe any superconductivity, and a few have observed magnetic response in small fragments that could be explained by normal diamagnetism or ferromagnetism. Some demonstrated and replicated alternate causes of the observations in the original papers: Copper-deficient copper (I) sulfide[9] has a known phase transition at 377 K (104 °C; 219 °F) from a low-temperature phase to a high-temperature superionic phase, with a sharp rise in resistivity[10][9] and a λ-like-feature in the heat capacity.[9] Furthermore, Cu2S is diamagnetic. + +Only one attempt observed any sign of superconductivity: Southeast University claimed to measure very low resistance in a flake of LK-99, in one of four synthesis attempts, below a temperature of 110 K (−163 °C; −262 °F).[2][62] Doubts were expressed by experts in the field, as they saw no dropoff to zero resistance, and used crude instruments that could not measure resistance below 10 μΩ (too high to distinguish superconductivity from less exotic low-temperature conductivity), and had large measurement artifacts.[46][63] + +Some replication efforts gained global visibility, with the aid of online replication trackers that catalogued new announcements and status updates.[50][25] diff --git a/samples/lk-99_espanol.md b/samples/lk-99_espanol.md new file mode 100644 index 0000000..0966482 --- /dev/null +++ b/samples/lk-99_espanol.md @@ -0,0 +1,87 @@ +--- +title: LK-99-es +url: https://es.wikipedia.org/wiki/LK-99 +--- +LK-99 + +LK-99 (del estudio de Lee-Kim 1999)1​ es un compuesto policristalino negro-grisáceo, obtenido mediante el dopaje de apatito de plomo con cobre. Un equipo de la Universidad de Corea liderado por Sukbae Lee (이석배) y Ji-Hoon Kim (김지훈) comenzó a evaluar este material como un posible superconductor a partir de 1999.2​ En 2023, publicaron preimpresiones afirmando que actúa como un superconductor a temperatura ambiente2​ con resistencia cero y efecto Meissner,2​ a temperaturas de hasta 400 Kelvin (127 °C) a presión ambiente.1​2​3​ + +Varios laboratorios intentaron replicar el trabajo y lograron obtener resultados iniciales en cuestión de semanas, ya que el proceso de producción del material es relativamente sencillo.4​ Hasta la fecha (8 de agosto de 2023) la comunidad científica no ha validado la superconductividad de LK-99 a ninguna temperatura a través de procesos de revisión por pares o mediante la reproducción independiente por parte de otros grupos de investigación.5​ Los intentos de seguir el proceso de síntesis propuesto arrojaron resultados variados. Aquellos que observaron levitación parcial similar a la reportada en el artículo original encontraron diamagnetismo pero no superconductividad. La mayoría de los laboratorios establecidos que intentaron replicar el trabajo del artículo original concluyeron que no se trataba de un superconductor. + +Los estudios iniciales que anunciaban el descubrimiento de LK-99 se subieron a arXiv, un archivo de preimpresiones de acceso abierto. Más tarde, Lee afirmó que los artículos preimpresos subidos estaban incompletos,6​ y el coautor Hyun-Tak Kim (김현탁) declaró que uno de los artículos contenía defectos.7​ +Composición química + +La composición química de LK-99 es aproximadamente Pb9Cu(PO4)6O tal que, en comparación con el plomo-apatito puro (Pb10(PO4)6O) , aproximadamente una cuarta parte de los iones Pb(II) en la posición 2 de la estructura de apatito se reemplazan por iones Cu(II).8​ +Síntesis + +Lee y sus colegas proporcionan un método para sintetizar el material LK-99 al producir lanarkita a partir de una mezcla 1:1 de óxido de plomo(II) (PbO) y sulfato de plomo(II) (Pb(SO4)), y luego calentarla a 725 °C (1.000 K) durante 24 horas en presencia de aire:8​ +(a) Mediciones de susceptibilidad diamagnética de LK-99, (b) muestra de LK-99 levitando parcialmente sobre un imán grande + +PbO + Pb(SO4) → Pb2(SO4)O + +Además, el fosfuro de cobre(I) (Cu3P) se produce mezclando polvos de cobre (Cu) y fósforo (P) en un tubo sellado bajo un vacío de 10-3 torr y calentándolos a 550 °C (820 K) durante 48 horas:8​ + +Cu + P → Cu3P + +Los cristales de lanarkita y fosfuro de cobre se muelen en polvo, se mezclan en una proporción molar de 1:1, se colocan en un tubo sellado en vacío y se calientan a 925 °C (1.200 K) durante entre 5 y 20 horas:8​ + +Pb2(SO4)O + Cu3P → Pb10-xCux(PO4)6O + S (g), dónde (0.9 < x < 1.1) +Propiedades físicas + +Se afirma que el material es un superconductor a temperatura ambiente.8​ Los artículos originales publicados no afirman haber visto características definitivas de superconductividad, resistencia cero y el efecto Meissner, pero muestran que el material exhibe fuertes propiedades diamagnéticas, incluido un video de muestra del material levitando parcialmente sobre un gran imán, que se correlaciona con la superconductividad. + +Como muchos materiales pueden parecer falsamente candidatos potenciales para la superconductividad a alta temperatura, además de un modo de resistencia cero y un claro efecto Meissner, los investigadores generalmente también demuestran otras propiedades esperadas como la fijación de flujo, la susceptibilidad magnética de CA, el efecto Josephson, un campo y corriente críticos dependientes de la temperatura, o un salto repentino en el calor específico alrededor de la temperatura crítica. A partir del 1 de agosto, ninguno de estos ha sido observado por el experimento original o intentos de replicación.9​ +Mecanismo propuesto para la superconductividad + +Se dice que el reemplazo parcial de iones Pb2+ (que miden 133 picómetros) con iones Cu2+ (que miden 87 picómetros) causa una reducción del 0,48 % en el volumen, lo que crea tensión interna dentro del material. Se afirma que la tensión interna causa un pozo cuántico de heterounión entre el Pb(1) y el oxígeno dentro del fosfato ([PO4]3−) generando un pozo cuántico superconductor (SQW).8​ + +Lee et al. afirman mostrar que LK-99 exhibe una respuesta a un campo magnético (potencialmente debido al efecto Meissner) cuando se usa la deposición química de vapor para aplicar LK-99 a una muestra de cobre no magnético. El apatito de plomo puro es un aislante, pero Lee et al. afirman que la apatita de plomo dopada con cobre que forma LK-99 es un superconductor o, a temperaturas más altas, un metal. No afirman haber observado ningún cambio en el comportamiento a lo largo de una temperatura de transición.[cita requerida] + +Los mecanismos del artículo se basaron en un artículo de 2021 de Hyun-Tak Kim10​ que describe una nueva teoría de superconductividad "BR-BCS" que combina una teoría clásica de transiciones de metal-aislante11​ con la teoría estándar de superconductividad de Bardeen-Cooper-Schrieffer (BCS). También utilizan ideas de la teoría de la superconductividad de huecos12​ de J.E.Hirsch, otro trabajo controvertido. + +El 1 de agosto de 2023, tres grupos independientes publicaron análisis de LK-99 con la teoría funcional de la densidad (DFT). Sinéad Griffin del Laboratorio Nacional Lawrence Berkeley lo analizó con el paquete de simulación Vienna Ab initio, mostrando que su estructura tendría bandas planas aisladas correlacionadas, una de las firmas de los superconductores de alta temperatura de transición.13​ Si y Held14​ encontraron bandas DFT planas similares, pero las correlaciones electrónicas conjeturadas harán de LK-99 un aislador de transferencia de carga. Esto significaría que se necesita el dopaje de electrones o huecos de LK-99 para que sea (super) conductor y debe obtenerse activamente en el proceso de síntesis.14​ +Nombre compuesto + +El nombre LK-99 proviene de las iniciales de los descubridores Sukbae Lee y Ji-Hoon Kim, y el año del descubrimiento (1999).8​ La pareja originalmente había estado trabajando con el profesor Tong-Shik Choi (최동식) en la Universidad de Corea en la década de 1990.15​ + +En 2008, investigadores de la Universidad de Corea fundaron el Centro de Investigación de Energía Cuántica (퀀텀 에너지연구소; también conocido como Q-Centre). Más tarde, Lee se convirtió en director ejecutivo de Q-Centre y Kim se convirtió en directora de investigación y desarrollo (I+D) en Q-Centre. +Historial de publicaciones + +En 2020, se envió un artículo inicial a Nature, pero fue rechazado.15​ Una investigación presentada de manera similar sobre superconductores a temperatura ambiente por Ranga P. Dias se había publicado en Nature a principios de ese año y se recibió con escepticismo: el artículo de Dias se retractó posteriormente en 2022 después de que se descubriera que sus datos habían sido falsificados.16​ + +En 2020, Lee y Ji-hoon Kim presentaron una solicitud de patente.17​ En 2021 se presentó una segunda solicitud de patente (en la que también se incluye a Kwon), que se publicó el 3 de marzo de 2023. El 4 de abril de 2023, el Q-Centre presentó una solicitud de marca coreana para "LK-99". + +En febrero de 2023, Q-Centre publicó un video en YouTube que afirmaba mostrar las propiedades magnéticas de una capa delgada de LK-99 depositada térmicamente sobre una placa de cobre. +Artículos académicos y preprints + +El 31 de marzo de 2023, se envió un artículo en coreano, "Consideración para el desarrollo de superconductores de presión ambiental a temperatura ambiente (LK-99)" a Korean Journal of Crystal Growth and Crystal Technology.18​ Fue aceptado el 18 de abril, pero no fue ampliamente leído hasta tres meses después. + +El 22 de julio de 2023, aparecieron dos preprints en arXiv. Uno incluía a Young-Wan Kwon, ex CTO de Q-Centre, como tercer autor. Una segunda preimpresión enumeraba como tercer autor a Hyun-Tak Kim, ex investigador principal del Instituto de Investigación de Electrónica y Telecomunicaciones y profesor del Colegio de William & Mary. El 23 de julio, los hallazgos también se enviaron a APL Materials para su revisión por pares.15​ + +El 28 de julio de 2023, Kwon presentó los hallazgos en un simposio realizado en la Universidad de Corea. Ese mismo día, la Agencia de Noticias Yonhap publicó un artículo en el que citaba a un funcionario de la Universidad de Corea diciendo que Kwon ya no estaba en contacto con la Universidad.19​ El artículo también citaba a Lee diciendo que Kwon había dejado el Q-Centre Research Institute cuatro meses antes; que los trabajos académicos sobre LK-99 no estaban terminados; y que los artículos se habían subido a arXiv sin el permiso de los otros autores.19​ + +El 31 de julio de 2023, un grupo dirigido por Kapil Kumar publicó una preimpresión en arXiv que documentaba sus intentos de replicación, que confirmaron la estructura mediante cristalografía de rayos X (XRD), pero no encontraron diamagnetismo ni levitación.20​ + +El 1 de agosto de 2023, un representante de Q-Centre le dijo a SBS News que las muestras originales a las que se hace referencia en el documento se darían a conocer al mundo pronto para su verificación. +Referencias + +«LK-99 Is the Superconductor of the Summer» (en inglés). 3 de agosto de 2023. Consultado el 9 de agosto de 2023. +Lee, Sukbae; Kim, Ji-Hoon; Kwon, Young-Wan (22 de julio). «The First Room-Temperature Ambient-Pressure Superconductor». arXiv:2307.12008 [cond-mat.supr-con]. doi:10.48550/arXiv.2307.12008. +Lee, Sukbae; Kim, Jihoon; Im, Sungyeon; An, Soomin; Kwon, Young-Wan; Ho, Auh Keun (2023-04). «Consideration for the development of room-temperature ambient-pressure superconductor (LK-99)». Journal of the Korean Crystal Growth and Crystal Technology (en inglés) 33 (2): 61-70. ISSN 1225-1429. doi:10.6111/JKCGCT.2023.33.2.061. Consultado el 9 de agosto de 2023. +Garisto, Daniel. «Viral New Superconductivity Claims Leave Many Scientists Skeptical». Scientific American (en inglés). Consultado el 9 de agosto de 2023. +Flaherty, Nick (26 de julio de 2023). «Race is on for room temperature superconductor». eeNews Europe (en inglés estadounidense). Consultado el 9 de agosto de 2023. +조승한 (28 de julio de 2023). «'상온 초전도체 구현' 한국 연구에 국내외 논란…"검증 거쳐야"». 연합뉴스 (en coreano). Consultado el 9 de agosto de 2023. +«Room-temperature superconductor 'breakthrough' met with scepticism». New Scientist (en inglés estadounidense). Consultado el 9 de agosto de 2023. +Lee, Sukbae; Kim, Ji-Hoon; Kwon, Young-Wan (2023). The First Room-Temperature Ambient-Pressure Superconductor. doi:10.48550/ARXIV.2307.12008. Consultado el 2 de agosto de 2023. +«A Room-Temperature Superconductor? New Developments». science.org (en inglés). 01-08-2023. Consultado el 2 de agosto de 2023. +Kim, Hyun-Tak (14 de mayo de 2021). «Room-temperature-superconducting Tc driven by electron correlation». Scientific Reports (en inglés) 11 (1): 10329. ISSN 2045-2322. doi:10.1038/s41598-021-88937-7. Consultado el 2 de agosto de 2023. +Brinkman, W. F.; Rice, T. M. (15 de noviembre de 1970). «Application of Gutzwiller's Variational Method to the Metal-Insulator Transition». Physical Review B 2 (10): 4302-4304. doi:10.1103/PhysRevB.2.4302. Consultado el 2 de agosto de 2023. +Hirsch, J. E. (23 de enero de 1989). «Hole superconductivity». Physics Letters A (en inglés) 134 (7): 451-455. ISSN 0375-9601. doi:10.1016/0375-9601(89)90370-8. Consultado el 2 de agosto de 2023. +Griffin, Sinéad M. (2023-07-31). «Origin of correlated isolated flat bands in copper-substituted lead phosphate apatite». arXiv:2307.16892 [cond-mat.supr-con]. +Si, Liang; Held, Karsten (2023-08-01). «Electronic structure of the putative room-temperature superconductor Pb9Cu(PO4)6O». arXiv:2308.00676 [cond-mat.supr-con]. +«‘노벨상감’ 상온 초전도체 세계 최초 개발했다는 한국 연구...과학계 ‘회의론’ 넘을까». n.news.naver.com (en coreano). Consultado el 2 de agosto de 2023. +Garisto, Dan (25 de julio de 2023). «‘A very disturbing picture’: another retraction imminent for controversial physicist». Nature (en inglés) 620 (7972): 14-16. doi:10.1038/d41586-023-02401-2. Consultado el 2 de agosto de 2023. +«Espacenet - Bibliographic data». worldwide.espacenet.com. Consultado el 2 de agosto de 2023. +Lee, Sukbae; Kim, Jihoon; Im, Sungyeon; An, SooMin; Kwon, Young-Wan; Auh, Keun Ho (30 de abril de 2023). «Consideration for the development of room-temperature ambient-pressure superconductor (LK-99)». Journal of the Korean Crystal Growth and Crystal Technology 33 (2): 61-70. doi:10.6111/JKCGCT.2023.33.2.061. Consultado el 2 de agosto de 2023. +조승한 (28 de julio de 2023). «'상온 초전도체 구현' 한국 연구에 국내외 논란…"검증 거쳐야"». 연합뉴스 (en coreano). Consultado el 2 de agosto de 2023. +Kumar, Kapil; Karn, N. K.; Awana, V. P. S. (2023). Synthesis of possible room temperature superconductor LK-99:Pb$_9$Cu(PO$_4$)$_6$O. doi:10.48550/ARXIV.2307.16402. Consultado el 2 de agosto de 2023. diff --git a/samples/lorem_ipsum.md b/samples/lorem_ipsum.md new file mode 100644 index 0000000..093231b --- /dev/null +++ b/samples/lorem_ipsum.md @@ -0,0 +1,69 @@ +--- +title: Lorem ipsum +url: https://www.lipsum.com/feed/html +--- + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut vel commodo turpis, a finibus sem. Aenean tincidunt venenatis justo, nec ullamcorper tortor scelerisque eu. Morbi sed semper justo, mollis consectetur libero. Nam consequat, enim in cursus volutpat, tortor mauris vehicula ex, in eleifend velit quam nec turpis. Sed pellentesque magna et volutpat mollis. Curabitur cursus neque id porta hendrerit. Maecenas condimentum tempor lobortis. + +Mauris egestas ex libero, et blandit nisl tincidunt sed. Phasellus feugiat tellus facilisis placerat ornare. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse sodales quam eget molestie feugiat. Phasellus pretium tempus pretium. Donec interdum justo id nunc condimentum mattis. Donec varius euismod lobortis. Nulla aliquam, felis et condimentum malesuada, odio felis finibus risus, sed viverra est justo in augue. In tempor sapien nec purus volutpat, pulvinar cursus magna imperdiet. Suspendisse cursus velit eu imperdiet ultricies. Phasellus tellus eros, mollis at faucibus ut, pulvinar vitae dui. Donec tempor, odio at euismod vehicula, elit lorem condimentum arcu, sit amet congue erat leo eget arcu. In id neque sollicitudin, mollis velit in, blandit mi. Maecenas ut eleifend urna, eu auctor dolor. + +Suspendisse molestie velit vel ipsum eleifend feugiat. Sed interdum lorem nisi, ornare congue augue pulvinar eget. Donec quis lacus in mauris gravida tempor. In hac habitasse platea dictumst. Curabitur enim lacus, lobortis sed pretium et, egestas sit amet risus. Sed nec vehicula urna. Fusce in est sem. Curabitur at odio pretium, sodales erat eget, porttitor arcu. Aenean tincidunt magna et augue blandit, sed rutrum libero feugiat. Nunc ac vehicula lacus. Nulla facilisis erat sit amet odio accumsan, vitae eleifend tellus gravida. Sed eleifend dignissim nibh ac blandit. Vestibulum dictum nisl et porta rhoncus. Phasellus suscipit risus sapien, nec maximus eros aliquam auctor. Vivamus rhoncus lacinia ligula, in tincidunt dolor mollis vitae. Quisque sapien nulla, elementum sit amet pretium et, porta at felis. + +Ut nec vulputate tortor. Suspendisse vulputate bibendum ipsum, quis aliquet risus consectetur sit amet. Nulla vitae accumsan nulla, non placerat tellus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec ac efficitur libero, a tristique lectus. Mauris in rutrum odio. Morbi ultrices pretium eleifend. In eu tempor nisl, eu posuere nunc. Suspendisse lorem felis, dictum non nisi sed, commodo luctus odio. + +Sed quis ligula luctus, consectetur diam id, maximus mi. Curabitur id porta tellus. Suspendisse eleifend in velit quis sodales. Pellentesque facilisis magna nibh, et vehicula ligula euismod ac. Donec laoreet sapien ex, vitae luctus felis imperdiet ac. Donec facilisis nisi et nibh sollicitudin, hendrerit tincidunt velit congue. Sed cursus fermentum metus in cursus. Etiam et ultricies turpis, non mattis metus. Nulla aliquam pellentesque risus, sed condimentum lectus blandit vel. In hac habitasse platea dictumst. Curabitur placerat velit sit amet tempus sodales. Nunc dapibus libero sem, eu mattis purus varius ac. Etiam quis placerat magna. + +Curabitur ac accumsan tortor. Aenean aliquam urna eget libero mollis, tristique fermentum elit gravida. Maecenas ultricies purus id pulvinar scelerisque. Phasellus molestie, lorem in tempus venenatis, ipsum ante accumsan ex, at cursus lorem ex in velit. Quisque efficitur gravida orci, ut dictum velit venenatis ac. Duis varius tincidunt metus. Sed vitae lacinia ante. Nulla sollicitudin neque quis porttitor dapibus. + +Pellentesque eleifend id metus nec bibendum. Curabitur ornare feugiat elit quis tincidunt. Donec ac elit in magna ullamcorper fermentum id vitae tellus. Donec quis eros in neque fermentum facilisis vitae eget orci. Sed pulvinar magna id eros eleifend lacinia. Nam luctus ornare sollicitudin. Phasellus sed ante magna. Aenean vitae urna in ex vehicula hendrerit. Integer a mollis magna. Mauris sagittis dolor at lectus lobortis, ut sodales diam euismod. Phasellus a magna sapien. Curabitur malesuada dignissim libero, at venenatis mi malesuada at. Nam sit amet risus volutpat, eleifend odio non, vestibulum nibh. Mauris mollis ut orci a facilisis. + +Integer fringilla urna nec justo malesuada, sit amet facilisis turpis malesuada. Etiam euismod vestibulum luctus. Sed vulputate rhoncus lobortis. Proin ullamcorper urna sit amet nisi maximus, non sollicitudin diam laoreet. Aenean vitae porttitor ante. Mauris mattis bibendum aliquam. Vivamus lorem arcu, viverra vel placerat id, pharetra vitae massa. Integer sit amet risus nec velit vulputate egestas. Nunc nisl quam, sodales at tellus vel, finibus elementum mi. Maecenas dui elit, suscipit vel orci a, sagittis elementum nulla. + +Integer nec tincidunt ex. Sed fringilla eros vitae diam efficitur efficitur et non enim. Donec gravida augue et aliquet auctor. Aliquam tellus tellus, convallis id porttitor eu, dapibus ut ex. Suspendisse vestibulum mi eget lacinia semper. Nullam odio eros, interdum ut orci sit amet, lobortis posuere risus. Morbi facilisis, libero eu auctor dictum, elit lacus faucibus erat, et pulvinar est purus sed lorem. Sed tempus maximus urna non viverra. Ut justo erat, fermentum quis ligula non, posuere fringilla leo. Donec tempus ex sed interdum placerat. Cras a nisi sit amet odio vulputate consectetur. Aliquam vestibulum mollis neque, quis volutpat turpis molestie sit amet. Nullam laoreet fringilla ligula sed facilisis. Donec accumsan eu nibh in tempus. + +Donec mauris tortor, placerat vitae rutrum in, cursus eget ante. Etiam ut mi nec urna sollicitudin vulputate id eget quam. Phasellus dignissim ac nunc in vulputate. Duis commodo convallis tincidunt. Nam quam diam, scelerisque id imperdiet pretium, pellentesque ornare orci. Donec bibendum sollicitudin leo. Sed quam urna, sodales sit amet lectus ut, varius fringilla ligula. In in nunc non ante commodo mattis ac eget nunc. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nullam sit amet elit velit. Mauris porttitor lorem nunc, quis pulvinar tellus interdum nec. Sed iaculis condimentum velit sed dictum. Aenean quis scelerisque enim, at cursus diam. + +Vivamus ut augue nec dui sagittis varius sed ac dui. Ut et mi leo. Pellentesque consectetur malesuada feugiat. Nunc quis nisi lorem. Nulla facilisi. Duis eu libero eget turpis consequat ultrices. Maecenas commodo sapien ac mauris facilisis rhoncus. Vestibulum quis ultrices neque. Etiam tincidunt nibh sed ex posuere, a fringilla justo feugiat. Etiam consequat mauris in mollis efficitur. Curabitur semper risus sed nunc posuere, semper tincidunt sapien tincidunt. Nulla fermentum vel lectus quis euismod. Nam vestibulum tellus at euismod imperdiet. Morbi scelerisque augue quis arcu ultrices faucibus. + +Praesent blandit vestibulum convallis. Aenean sed pulvinar diam, tincidunt elementum nisi. In commodo ornare bibendum. Nulla eget ipsum eu lectus gravida scelerisque in vitae sem. Morbi bibendum purus turpis. Morbi varius efficitur orci vitae ullamcorper. Quisque dignissim, nisi a mollis consectetur, ligula elit sagittis dui, ut interdum nisl dolor pulvinar nibh. Nam lectus elit, suscipit in dapibus ac, hendrerit sit amet nisi. Praesent ut elementum lectus, sed tristique augue. In tortor nulla, tincidunt non dignissim a, ultricies sit amet ante. Aliquam a nibh fermentum, aliquam nisl id, auctor dui. Donec sagittis nisl ante, et finibus leo placerat et. Curabitur eget ligula turpis. + +Aliquam tristique velit nulla, vel rutrum augue euismod nec. Nunc at lectus nunc. Ut sed nisl ante. Nullam quis leo lacus. In hac habitasse platea dictumst. Vestibulum vel condimentum quam. Interdum et malesuada fames ac ante ipsum primis in faucibus. Proin iaculis libero justo, sed faucibus metus lacinia a. Maecenas id nulla dictum, tempus sem porttitor, faucibus tellus. + +Ut pretium, turpis non commodo commodo, lorem ex interdum tortor, non vulputate neque justo at orci. Nam eu nisl mollis, finibus nibh quis, gravida urna. Donec sollicitudin faucibus odio vitae sagittis. Sed lectus diam, hendrerit ac quam et, aliquet faucibus orci. Ut at felis sit amet neque dictum consectetur eu sit amet mauris. Phasellus vitae tempus purus. Ut fermentum feugiat dui. Nulla pharetra, orci sit amet sollicitudin dapibus, ligula neque consequat est, sit amet fermentum augue arcu sed purus. Donec nec ante tempor, iaculis massa at, placerat est. Nulla facilisi. Integer aliquam volutpat fringilla. + +Phasellus laoreet malesuada nibh, quis rhoncus dui congue a. In nec velit vel neque efficitur tincidunt. Vestibulum dolor mi, pharetra sed consequat vel, venenatis a magna. Fusce tristique justo vitae fringilla molestie. Fusce consectetur magna libero, eget elementum ipsum ultricies vel. Nullam viverra neque at tellus facilisis, molestie suscipit ligula mattis. Fusce molestie, quam in dictum blandit, quam nulla sagittis dolor, vel ornare nibh ligula a tortor. Pellentesque interdum lacus leo, eget condimentum libero finibus id. In ultricies est risus, hendrerit dictum magna accumsan sit amet. Fusce eleifend, augue vitae ornare venenatis, mi elit aliquam diam, a facilisis ipsum lectus non tellus. + +Vestibulum lectus sem, malesuada ac mi et, vestibulum condimentum orci. Donec vel congue nunc. Duis blandit felis dictum lorem viverra, viverra pulvinar ex vestibulum. Nunc quam lectus, euismod eget nisl id, laoreet condimentum libero. Morbi ac magna vestibulum, pretium dolor sed, consequat nibh. Proin ut ligula vel tortor iaculis egestas. Integer eu tristique dui. Curabitur tempor, elit in tempus sodales, nulla lorem posuere tortor, at facilisis risus libero eu purus. Pellentesque eu feugiat tortor. + +Aliquam eget finibus diam, a ultricies nulla. Mauris nec aliquet orci. Donec tincidunt urna non leo luctus, nec cursus augue interdum. Fusce semper nibh sed orci tempus, interdum tempor magna lacinia. Nullam eu dictum felis. Donec lorem felis, suscipit sed rutrum at, aliquet vitae lorem. Sed augue mi, efficitur et metus at, vulputate dapibus magna. Sed porta dui sed sem rutrum fringilla. + +Duis nec ipsum orci. Nam ac dui ullamcorper lacus egestas efficitur eget vel ex. Vivamus sapien arcu, vestibulum ac tincidunt nec, tempus id ipsum. Sed leo ex, vestibulum et pretium et, dapibus ut urna. Vivamus ex lacus, gravida non pharetra a, varius nec velit. Quisque luctus eget ante ac auctor. Nam blandit dapibus eros vitae suscipit. Morbi in mi sit amet augue facilisis bibendum non vitae nibh. Mauris convallis massa ac rhoncus egestas. Cras fermentum ipsum nec erat porttitor, id lacinia leo euismod. Suspendisse potenti. Nam vel elementum sem. Proin dolor ipsum, dictum quis urna eu, finibus vulputate libero. + + Proin convallis massa id nunc ultrices, luctus varius felis facilisis. Mauris congue vestibulum aliquam. Pellentesque nec ligula aliquam, vulputate lorem a, congue orci. Pellentesque diam purus, scelerisque sit amet commodo ut, porttitor a ex. Phasellus rutrum orci ante, id fringilla est fringilla vel. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi tincidunt dictum hendrerit. Integer sed odio sit amet felis congue sodales. Pellentesque sit amet bibendum lacus. Proin ornare sapien cursus ultricies iaculis. Morbi orci odio, accumsan cursus dapibus et, iaculis ut dui. Fusce in semper mauris. + +Pellentesque nec laoreet arcu. Proin sagittis at velit a aliquet. In et nisi metus. Cras nec tortor vel nisi dapibus consectetur. Nullam interdum nisl a nunc egestas vestibulum. Duis id posuere dui, quis malesuada lorem. Vivamus posuere orci quis mi dapibus ornare. Curabitur lectus erat, sodales non risus vulputate, convallis consequat augue. + +Nam efficitur sollicitudin nunc. Fusce dapibus, enim non aliquet tempor, metus ipsum tristique lacus, id viverra nulla risus in erat. Aenean mauris nunc, scelerisque at est euismod, maximus dictum est. Nulla ultricies, urna vulputate varius posuere, nisl tellus imperdiet justo, ut facilisis lectus mauris ut neque. Pellentesque pharetra eu lorem non vulputate. Proin congue mauris et commodo pretium. Pellentesque quis felis ullamcorper, finibus ex in, imperdiet eros. Phasellus id ultricies velit, et condimentum dolor. Ut sed justo eget felis porta ullamcorper in in nulla. Maecenas condimentum, nisl eget ultrices convallis, magna sem viverra mauris, ut iaculis risus justo eu sem. Nam non porttitor elit. Aliquam dictum nisi sed rutrum cursus. + +Suspendisse dapibus sed tellus eget pulvinar. Pellentesque aliquet diam blandit, ornare mauris in, tempus leo. Vestibulum rhoncus justo ut metus condimentum eleifend. Aenean elit nunc, maximus in feugiat posuere, vulputate quis nibh. Sed placerat fringilla felis, id rutrum nunc dapibus id. Fusce quam nibh, elementum eget purus ac, tincidunt scelerisque sem. Donec dui diam, tempor et tincidunt nec, ultricies ac libero. + +Nunc ac est in turpis suscipit tristique a in ligula. Aliquam nec mauris est. Fusce efficitur a tortor sit amet rhoncus. Integer euismod ante et nisl molestie, vel luctus magna mattis. Aliquam sodales dui vitae neque ultricies dictum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris egestas pharetra orci at tempus. Vivamus sit amet tellus maximus, gravida nunc eu, venenatis tortor. + +Nam facilisis sem sed nunc consectetur, et rhoncus mauris lacinia. Morbi vel ante id sapien interdum sodales ut a massa. Donec elementum elementum risus, tristique vehicula odio efficitur et. Mauris augue magna, consequat id malesuada vestibulum, rutrum sed felis. Ut id magna at tellus iaculis dapibus vel in velit. Ut luctus rhoncus ante in varius. Nullam eget sem libero. Curabitur a molestie ligula. + +Vestibulum sed commodo ipsum. In commodo leo a consectetur auctor. Aliquam venenatis eros arcu, sed viverra felis aliquam vitae. Fusce tincidunt placerat metus vel congue. Sed facilisis facilisis purus, vel maximus velit dignissim volutpat. Praesent vitae volutpat magna. Nunc ultricies tortor a dignissim ullamcorper. Etiam in purus eget mauris congue venenatis. Duis placerat aliquam sapien placerat tempus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aenean cursus, lacus eu dignissim blandit, eros eros porttitor nisi, ut bibendum lacus mi at ante. + +Duis auctor tellus ut orci aliquet tincidunt. Sed maximus posuere magna ultrices posuere. Nunc imperdiet ex id augue consectetur, eu commodo massa ultricies. Nulla at mauris consequat, mattis sapien eget, feugiat mauris. In vulputate accumsan leo. Vestibulum mi diam, ultricies ut nibh eu, hendrerit porttitor metus. Praesent mollis, nisi eu mollis iaculis, metus orci aliquam ipsum, quis interdum dolor risus ut turpis. + +Nunc volutpat elit non erat laoreet condimentum. Maecenas vitae eros mauris. Integer vel neque tincidunt justo finibus consequat eu interdum lacus. Nullam ante diam, laoreet sit amet commodo id, pellentesque vitae est. Vestibulum feugiat lacinia risus, eu sagittis turpis venenatis non. Pellentesque porta, felis vitae consequat malesuada, sapien elit scelerisque nisi, eget efficitur velit turpis vel metus. Nullam tincidunt luctus leo, sit amet dapibus massa eleifend volutpat. Curabitur in maximus urna, id facilisis felis. Cras at hendrerit sem, pharetra mattis dui. Mauris tempus molestie nisi vel aliquam. + +Phasellus a ornare ipsum. Vestibulum id diam in lorem mattis mattis quis vitae massa. Integer iaculis nisi quis augue congue, nec aliquet erat lobortis. Aliquam mollis pellentesque dignissim. Etiam id convallis augue. Maecenas odio metus, placerat eu malesuada at, condimentum nec libero. Phasellus a quam ornare ex suscipit pharetra non non tellus. Suspendisse accumsan lacus et dapibus consequat. Vivamus non sem eu elit elementum porttitor. Ut faucibus urna non tristique porttitor. In id ultrices lectus, pellentesque finibus dui. Sed eu tempor justo, ac facilisis mi. Aliquam metus ipsum, faucibus vitae eros at, ornare ultricies odio. Nunc consectetur viverra fringilla. Nullam quam diam, vehicula id porta in, convallis id arcu. Vestibulum fermentum massa magna, ut mattis nibh placerat in. + +Suspendisse libero leo, dapibus non eros in, viverra malesuada elit. Suspendisse nec metus blandit, accumsan sem vitae, dapibus ipsum. In eu varius mi, vel euismod leo. Ut ligula justo, tincidunt quis est ac, malesuada ultrices lorem. Donec felis turpis, malesuada vel egestas et, consequat at odio. Nunc eget tellus nibh. Nulla tincidunt leo eu porta molestie. Curabitur volutpat pharetra elit, commodo egestas nisi aliquam sollicitudin. Sed scelerisque, dui a euismod aliquam, lorem ipsum ultricies lectus, nec vulputate leo odio sit amet diam. In porttitor sem eget nisi semper molestie. Proin a porttitor urna. Aliquam bibendum gravida ligula, vitae accumsan purus iaculis vitae. Aliquam hendrerit orci vel ante aliquam, ut lacinia nisi posuere. Quisque condimentum sed tellus eget laoreet. Nulla facilisis massa a ex ultrices suscipit. + +Sed consequat accumsan sem, id tincidunt nulla egestas a. Morbi tempus pellentesque lacus. Duis porta est est, eget facilisis dui interdum vitae. Nam fringilla ac nisl sit amet eleifend. Morbi rhoncus mauris in odio ornare rutrum ac euismod risus. In ac congue ante, id volutpat est. Sed mattis eget justo non scelerisque. Fusce quis tortor sit amet sem condimentum blandit. Nullam nec aliquam orci. Nulla maximus, leo sit amet rhoncus rutrum, nisi massa interdum ex, sed maximus nunc metus sit amet est. Integer posuere egestas sem ut laoreet. Aenean tristique quis turpis eget rutrum. Integer et tellus vel elit cursus ultricies. In et metus non justo iaculis ultrices pellentesque vitae dolor. Cras ac libero auctor, sollicitudin massa non, maximus diam. + +Maecenas consectetur placerat tellus nec euismod. Nunc consectetur mauris sed felis finibus rhoncus. Proin vitae facilisis tortor. Nunc leo tellus, placerat nec accumsan sed, vulputate eu enim. Fusce egestas quis leo non lobortis. Nunc lectus massa, volutpat sit amet mollis sed, auctor eu mi. Mauris vitae dapibus magna. Nulla sed faucibus est, eget ultricies neque. Maecenas quis volutpat tellus. Donec et metus porttitor, commodo odio quis, consectetur nibh. Quisque id tempus ligula. Quisque in finibus odio. + +Praesent id consequat lorem, ac mollis lectus. Etiam volutpat suscipit sollicitudin. In tempus, urna a pharetra vehicula, augue mauris vestibulum nunc, quis commodo nisi nunc et quam. Donec sit amet pellentesque ante. Fusce blandit, dui venenatis feugiat fermentum, lectus tellus pellentesque urna, sed consequat lacus enim ac lorem. Suspendisse nibh risus, luctus at pellentesque a, elementum nec velit. Cras nulla sapien, interdum in erat pretium, porttitor mattis purus. Nulla erat risus, ultricies quis orci in, tincidunt sollicitudin ligula. Sed congue, risus a egestas tristique, massa eros semper orci, eu aliquet velit nisi vel turpis. Vivamus tincidunt aliquet rutrum. Etiam ac hendrerit mauris. Fusce venenatis quis eros non aliquet. + +Phasellus placerat interdum ligula non malesuada. Curabitur mattis eget lorem eu convallis. In a urna tincidunt, ultrices lectus et, convallis orci. Donec dictum elit vel mi semper fermentum. Cras pellentesque consequat porttitor. Quisque quis elit id turpis blandit iaculis. Donec pulvinar lacinia ligula non consectetur. Etiam auctor pretium enim, sed lacinia sem rhoncus quis. Ut sed purus eget lacus elementum mollis. Morbi sodales sed ipsum non vehicula. Nulla diam metus, vulputate nec iaculis ut, venenatis a nisl. Pellentesque mauris diam, suscipit vel ipsum in, maximus mollis tortor. Donec porttitor porta tristique. Ut sagittis sed dui eget venenatis. diff --git a/samples/openai_board_ann.md b/samples/openai_board_ann.md new file mode 100644 index 0000000..3e1d7bd --- /dev/null +++ b/samples/openai_board_ann.md @@ -0,0 +1,22 @@ +--- +title: openai board ann +url: https://openai.com/blog/openai-announces-leadership-transition +--- +Chief technology officer Mira Murati appointed interim CEO to lead OpenAI; Sam Altman departs the company. + +Search process underway to identify permanent successor. + + +The board of directors of OpenAI, Inc., the 501(c)(3) that acts as the overall governing body for all OpenAI activities, today announced that Sam Altman will depart as CEO and leave the board of directors. Mira Murati, the company’s chief technology officer, will serve as interim CEO, effective immediately. + +A member of OpenAI’s leadership team for five years, Mira has played a critical role in OpenAI’s evolution into a global AI leader. She brings a unique skill set, understanding of the company’s values, operations, and business, and already leads the company’s research, product, and safety functions. Given her long tenure and close engagement with all aspects of the company, including her experience in AI governance and policy, the board believes she is uniquely qualified for the role and anticipates a seamless transition while it conducts a formal search for a permanent CEO. + +Mr. Altman’s departure follows a deliberative review process by the board, which concluded that he was not consistently candid in his communications with the board, hindering its ability to exercise its responsibilities. The board no longer has confidence in his ability to continue leading OpenAI. + +In a statement, the board of directors said: “OpenAI was deliberately structured to advance our mission: to ensure that artificial general intelligence benefits all humanity. The board remains fully committed to serving this mission. We are grateful for Sam’s many contributions to the founding and growth of OpenAI. At the same time, we believe new leadership is necessary as we move forward. As the leader of the company’s research, product, and safety functions, Mira is exceptionally qualified to step into the role of interim CEO. We have the utmost confidence in her ability to lead OpenAI during this transition period.” + +OpenAI’s board of directors consists of OpenAI chief scientist Ilya Sutskever, independent directors Quora CEO Adam D’Angelo, technology entrepreneur Tasha McCauley, and Georgetown Center for Security and Emerging Technology’s Helen Toner. + +As a part of this transition, Greg Brockman will be stepping down as chairman of the board and will remain in his role at the company, reporting to the CEO. + +OpenAI was founded as a non-profit in 2015 with the core mission of ensuring that artificial general intelligence benefits all of humanity. In 2019, OpenAI restructured to ensure that the company could raise capital in pursuit of this mission, while preserving the nonprofit's mission, governance, and oversight. The majority of the board is independent, and the independent directors do not hold equity in OpenAI. While the company has experienced dramatic growth, it remains the fundamental governance responsibility of the board to advance OpenAI’s mission and preserve the principles of its Charter. diff --git a/samples/openai_paper_weak_to_strong.md b/samples/openai_paper_weak_to_strong.md new file mode 100644 index 0000000..4e01cc6 --- /dev/null +++ b/samples/openai_paper_weak_to_strong.md @@ -0,0 +1,43 @@ +--- +title: weak to strong +url: https://openai.com/research/weak-to-strong-generalization +--- +A core challenge for aligning future superhuman AI systems (superalignment) is that humans will need to supervise AI systems much smarter than them. We study a simple analogy: can small models supervise large models? We show that we can use a GPT-2-level model to elicit most of GPT-4’s capabilities—close to GPT-3.5-level performance—generalizing correctly even to hard problems where the small model failed. This opens up a new research direction that allows us to directly tackle a central challenge of aligning future superhuman models while making iterative empirical progress today. +The superalignment problem + +We believe superintelligence—AI vastly smarter than humans—could be developed within the next ten years. However, we still do not know how to reliably steer and control superhuman AI systems. Solving this problem is essential for ensuring that even the most advanced AI systems in the future remain safe and beneficial to humanity. + +We formed the Superalignment team earlier this year to solve this problem of superintelligence alignment. Today, we are releasing the team’s first paper, which introduces a new research direction for empirically aligning superhuman models. + +Current alignment methods, such as reinforcement learning from human feedback (RLHF), rely on human supervision. However, future AI systems will be capable of extremely complex and creative behaviors that will make it hard for humans to reliably supervise them. For example, superhuman models may be able to write millions of lines of novel—and potentially dangerous—computer code that would be very hard even for expert humans to understand. + +Relative to superhuman AI models, humans will be “weak supervisors.” This is a core challenge for AGI alignment: how can weak supervisors trust and control substantially stronger models? +Our setup + +To make progress on this core challenge, we propose an analogy we can empirically study today: can we use a smaller (less capable) model to supervise a larger (more capable) model? +Superalignmentblog Artwork Transparent + +A simple analogy for superalignment: In traditional machine learning (ML), humans supervise AI systems weaker than themselves (left). To align superintelligence, humans will instead need to supervise AI systems smarter than them (center). We cannot directly study this problem today, but we can study a simple analogy: can small models supervise larger models (right)? + +Naively, we might not expect a strong model to perform better than the weak supervisor that provides its training signal—it may simply learn to imitate all the errors the weak supervisor makes. On the other hand, strong pretrained models have excellent raw capabilities—we don't need to teach them new tasks from scratch, we just need to elicit their latent knowledge. The critical question is then: will the strong model generalize according to the weak supervisor's underlying intent—leveraging its full capabilities to solve the task even on difficult problems where the weak supervisor can only provide incomplete or flawed training labels? +Our results +GPT-2~2.5~3~3.5GPT-4strong ceilingour methodnaive finetuningweak supervisor +Typical weak-to-strong generalization across NLP benchmarks: We use a GPT-2-level model as a weak supervisor to finetune GPT-4. + +We can significantly improve generalization in many settings. We use a simple method that encourages the strong model to be more confident—including confidently disagreeing with the weak supervisor if necessary. When we supervise GPT-4 with a GPT-2-level model using this method on NLP tasks, the resulting model typically performs somewhere between GPT-3 and GPT-3.5. We are able to recover much of GPT-4’s capabilities with only much weaker supervision. + +This method is a proof of concept with important limitations; for example, it still doesn’t work on ChatGPT preference data. However, we also find signs of life with other approaches, such as optimal early stopping and bootstrapping from small to intermediate to large models. + +Collectively, our results suggest that (1) naive human supervision—such as reinforcement learning from human feedback (RLHF)—could scale poorly to superhuman models without further work, but (2) it is feasible to substantially improve weak-to-strong generalization. +Research opportunities + +There are still important disanalogies between our current empirical setup and the ultimate problem of aligning superhuman models. For example, it may be easier for future models to imitate weak human errors than for current strong models to imitate current weak model errors, which could make generalization harder in the future. + +Nevertheless, we believe our setup captures some key difficulties of aligning future superhuman models, enabling us to start making empirical progress on this problem today. There are many promising directions for future work, including fixing the disanalogies in our setup, developing better scalable methods, and advancing our scientific understanding of when and how we should expect good weak-to-strong generalization. + +We believe this is an exciting opportunity for the ML research community to make progress on alignment. To kickstart more research in this area, + + We are releasing open source code to make it easy to get started with weak-to-strong generalization experiments today. + We are launching a $10 million grants program for graduate students, academics, and other researchers to work on superhuman AI alignment broadly. We’re especially excited to support research related to weak-to-strong generalization. + +Figuring out how to align future superhuman AI systems to be safe has never been more important, and it is now easier than ever to make empirical progress on this problem. We are excited to see what breakthroughs researchers discover. diff --git a/samples/politics_is_the_mind_killer.md b/samples/politics_is_the_mind_killer.md new file mode 100644 index 0000000..3006e63 --- /dev/null +++ b/samples/politics_is_the_mind_killer.md @@ -0,0 +1,19 @@ +--- +title: politics is the mind-killer +url: https://www.lesswrong.com/posts/9weLK2AJ9JEt2Tt8f/politics-is-the-mind-killer +--- +People go funny in the head when talking about politics. The evolutionary reasons for this are so obvious as to be worth belaboring: In the ancestral environment, politics was a matter of life and death. And sex, and wealth, and allies, and reputation . . . When, today, you get into an argument about whether “we” ought to raise the minimum wage, you’re executing adaptations for an ancestral environment where being on the wrong side of the argument could get you killed. Being on the right side of the argument could let you kill your hated rival! + +If you want to make a point about science, or rationality, then my advice is to not choose a domain from contemporary politics if you can possibly avoid it. If your point is inherently about politics, then talk about Louis XVI during the French Revolution. Politics is an important domain to which we should individually apply our rationality—but it’s a terrible domain in which to learn rationality, or discuss rationality, unless all the discussants are already rational. + +Politics is an extension of war by other means. Arguments are soldiers. Once you know which side you’re on, you must support all arguments of that side, and attack all arguments that appear to favor the enemy side; otherwise it’s like stabbing your soldiers in the back—providing aid and comfort to the enemy. People who would be level-headed about evenhandedly weighing all sides of an issue in their professional life as scientists, can suddenly turn into slogan-chanting zombies when there’s a Blue or Green position on an issue. + +In artificial intelligence, and particularly in the domain of nonmonotonic reasoning, there’s a standard problem: “All Quakers are pacifists. All Republicans are not pacifists. Nixon is a Quaker and a Republican. Is Nixon a pacifist?” + +What on Earth was the point of choosing this as an example? To rouse the political emotions of the readers and distract them from the main question? To make Republicans feel unwelcome in courses on artificial intelligence and discourage them from entering the field?1 + +Why would anyone pick such a distracting example to illustrate nonmonotonic reasoning? Probably because the author just couldn’t resist getting in a good, solid dig at those hated Greens. It feels so good to get in a hearty punch, y’know, it’s like trying to resist a chocolate cookie. + +As with chocolate cookies, not everything that feels pleasurable is good for you. + +I’m not saying that I think we should be apolitical, or even that we should adopt Wikipedia’s ideal of the Neutral Point of View. But try to resist getting in those good, solid digs if you can possibly avoid it. If your topic legitimately relates to attempts to ban evolution in school curricula, then go ahead and talk about it—but don’t blame it explicitly on the whole Republican Party; some of your readers may be Republicans, and they may feel that the problem is a few rogues, not the entire party. As with Wikipedia’s NPOV, it doesn’t matter whether (you think) the Republican Party really is at fault. It’s just better for the spiritual growth of the community to discuss the issue without invoking color politics. diff --git a/samples/statement_vyKamala_on_passing_of_johnson.md b/samples/statement_vyKamala_on_passing_of_johnson.md new file mode 100644 index 0000000..ad33162 --- /dev/null +++ b/samples/statement_vyKamala_on_passing_of_johnson.md @@ -0,0 +1,17 @@ +--- +title: statement by whitehouse on passing +url: https://www.whitehouse.gov/briefing-room/statements-releases/2023/12/31/statement-by-vice-president-kamala-harris-on-the-passing-of-congresswoman-eddie-bernice-johnson/ +--- +Statement By Vice President Kamala Harris on The Passing of Congresswoman Eddie Bernice Johnson + +Congresswoman Eddie Bernice Johnson was a visionary, a pioneer, and a fighter. + +At a young age, she witnessed and experienced the profound effects of segregation and decided she would not stay on the sidelines in the fight for justice. She would go on to have a trailblazing career — from becoming the first Black chief psychiatric nurse at the Dallas Veterans Affairs Hospital and the first Black woman elected to public office in Dallas, to serving in the state legislature, becoming the first Black person to represent Dallas in Congress, and making history as the first registered nurse elected to the House of Representatives. + +Throughout her long career in public service, she was always clear-eyed about what she was fighting for: the right of every person in Dallas and across the country to live free from discrimination and to have the opportunity to live up to their full potential. + +As the first person of color and woman to chair the House Science, Space, and Technology Committee, she played an instrumental role in the passage of the CHIPS and Science Act, which is making historic investments in our economy, innovation, and HBCUs. + +I had the privilege to serve alongside her in the Congressional Black Caucus and know that so many have benefited from her tireless work, myself included. Her legacy and leadership will be felt for generations to come. + +Today, Doug and I are thinking of Congresswoman Johnson, her family, her community, members of Alpha Kappa Alpha Sorority, Inc., and all of those whose lives she impacted. diff --git a/samples/survey_of_rumours.md b/samples/survey_of_rumours.md new file mode 100644 index 0000000..da84cde --- /dev/null +++ b/samples/survey_of_rumours.md @@ -0,0 +1,122 @@ + +--- +title: Gemini to Q* +url: https://browse.arxiv.org/html/2312.10868v1/ +--- +Abstract + +This comprehensive survey explored the evolving landscape of generative Artificial Intelligence (AI), with a specific focus on the transformative impacts of Mixture of Experts (MoE), multimodal learning, and the speculated advancements towards Artificial General Intelligence (AGI). It critically examined the current state and future trajectory of generative Artificial Intelligence (AI), exploring how innovations like Google’s Gemini and the anticipated OpenAI Q* project are reshaping research priorities and applications across various domains, including an impact analysis on the generative AI research taxonomy. It assessed the computational challenges, scalability, and real-world implications of these technologies while highlighting their potential in driving significant progress in fields like healthcare, finance, and education. It also addressed the emerging academic challenges posed by the proliferation of both AI-themed and AI-generated preprints, examining their impact on the peer-review process and scholarly communication. The study highlighted the importance of incorporating ethical and human-centric methods in AI development, ensuring alignment with societal norms and welfare, and outlined a strategy for future AI research that focuses on a balanced and conscientious use of MoE, multimodality, and AGI in generative AI. +Index Terms: AI Ethics, Artificial General Intelligence (AGI), Artificial Intelligence (AI), Gemini, Generative AI, Mixture of Experts (MoE), Multimodality, Q* (Q-star), Research Impact Analysis. +I Introduction + +The historical context of AI, tracing back to Alan Turing’s “Imitation Game” [1], early computational theories [2, 3], and the development of the first neural networks and machine learning [4, 5, 6], has set the foundation for today’s advanced models. This evolution, accentuated by crucial moments such as the rise of deep learning and reinforcement learning, has been vital in shaping the contemporary trends in AI, including the sophisticated Mixture of Experts (MoE) models and multimodal AI systems, illustrating the field’s dynamic and continuously evolving character. These advancements are a testament to the dynamic and ever-evolving nature of AI technology. The evolution of Artificial Intelligence (AI) has witnessed a crucial turn with the advent of Large Language Models (LLMs), notably ChatGPT, developed by OpenAI, and the recent unveiling of Google’s Gemini [7, 8]. This technology has not only revolutionized the industry and academia, but has also reignited critical discussions concerning AI consciousness and its potential threats to humanity [9, 10, 11]. The development of such advanced AI systems, including notable competitors like Anthropic’s Claude, and now Gemini, which demonstrates several advances over previous models like GPT-3 and Google’s own LaMDA, has reshaped the research landscape. Gemini’s ability to learn from two-way conversations and its “spike-and-slab” attention method, which allows it to focus on relevant parts of the context during multi-turn conversations, represents a significant leap in developing models that are better equipped for multidomain conversational applications1. These innovations in LLMs, including the mixture-of-experts methods employed by Gemini, signal a move towards models that can handle a diversity of inputs and foster multimodal approaches. Amidst this backdrop, speculations of an OpenAI project known as Q* (Q-Star) have surfaced, allegedly combining the power of LLMs with sophisticated algorithms such as Q-learning and A* (A-Star algorithm), further contributing to the dynamic research environment2. +I-A Changing AI Research Popularity + +As the field of LLMs continues to evolve, exemplified by innovations such as Gemini and Q*, a multitude of studies have surfaced with the aim of charting future research paths, which have varied from identifying emerging trends to highlighting areas poised for swift progress. The dichotomy of established methods and early adoption is evident, with “hot topics” in LLM research increasingly shifting towards multimodal capabilities and conversation-driven learning, as demonstrated by Gemini. The propagation of preprints has expedited knowledge sharing, but also brings the risk of reduced academic scrutiny. Issues like inherent biases, noted by Retraction Watch, along with concerns about plagiarism and forgery, present substantial hurdles [12]. The academic world, therefore, stands at an intersection, necessitating a unified drive to refine research directions in light of the fast-paced evolution of the field, which appears to be partly traced through the changing popularity of various research keywords over time. The release of generative models like GPT and the widespread commercial success of ChatGPT have been influential. As depicted in Figure 4, the rise and fall of certain keywords appear to have correlated with significant industry milestones, such as the release of the “Transformer” model in 2017 [13], the GPT model in 2018 [14], and the commercial ChatGPT-3.5 in December 2022. For instance, the spike in searches related to “Deep Learning” coincides with the breakthroughs in neural network applications, while the interest in “Natural Language Processing” surges as models like GPT and LLaMA redefine what’s possible in language understanding and generation. The enduring attention to “Ethics / Ethical” in AI research, despite some fluctuations, reflects the continuous and deep-rooted concern for the moral dimensions of AI, underscoring that ethical considerations are not merely a reactionary measure, but an integral and persistent dialogue within the AI discussion [15]. + +It is academically intriguing to postulate whether these trends signify a causal relationship, where technological advancements drive research focus, or if the burgeoning research itself propels technological development. This paper also explores the profound societal and economic impacts of AI advancements. We examine how AI technologies are reshaping various industries, altering employment landscapes, and influencing socio-economic structures. This analysis highlights both the opportunities and challenges posed by AI in the modern world, emphasizing its role in driving innovation and economic growth, while also considering the ethical implications and potential for societal disruption. Future studies could yield more definitive insights, yet the synchronous interplay between innovation and academic curiosity remains a hallmark of AI’s progress. +2011201220132014201520162017201820192020202120222023100k200k300k400k500k600k700kYearNumber of search results +Figure 1: Number of search results on Google Scholar with different keywords by year 4 + +Meanwhile, the exponential increase in the number of preprints posted on arXiv under the Computer Science > Artificial Intelligence (cs.AI) category, as illustrated in Figure 2, appears to signify a paradigm shift in research dissemination within the AI community. While the rapid distribution of findings enables swift knowledge exchange, it also raises concerns regarding the validation of information. The surge in preprints may lead to the propagation of unvalidated or biased information, as these studies do not undergo the rigorous scrutiny and potential retraction typical of peer-reviewed publications [16, 17]. This trend underlines the need for careful consideration and critique in the academic community, especially given the potential for such unvetted studies to be cited and their findings propagated. +201120122013201420152016201720182019202020212022202302,0004,0006,0008,00010,00012,00014,00016,00018,00020,00022,00024,000YearNumber of Preprints +cs.AI Preprints on arXiv +Figure 2: Annual number of preprints posted under the cs.AI category on arXiv.org +I-B Objectives + +The impetus for this investigation is the official unveiling of Gemini and the speculative discourse surrounding Q* project, which prompts a timely examination of the prevailing currents in generative AI research. This paper specifically contributes to the understanding of how MoE, multimodality, and Artificial General Intelligence (AGI) are impacting generative AI models, offering detailed analysis and future directions for each of these three key areas. This study does not aim to perpetuate conjecture about the unrevealed Q-Star initiative, but rather to critically appraise the potential for obsolescence or insignificance in extant research themes, whilst concurrently delving into burgeoning prospects within the rapidly transforming LLM panorama. This inquiry is reminiscent of the obsolete nature of encryption-centric or file-entropy-based ransomware detection methodologies, which have been eclipsed by the transition of ransomware collectives towards data theft strategies utilizing varied attack vectors, relegating contemporary studies on crypto-ransomware to the status of latecomers [18, 19]. Advances in AI are anticipated to not only enhance capabilities in language analysis and knowledge synthesis but also to pioneer in areas like Mixture of Experts (MoE) [20, 21, 22, 23, 24, 25], multimodality [26, 27, 28, 29, 30], and Artificial General Intelligence (AGI) [31, 32, 10, 11], and has already heralded the obsolescence of conventional, statistics-driven natural language processing techniques in many domains [8]. Nonetheless, the perennial imperative for AI to align with human ethics and values persists as a fundamental tenet [33, 34, 35], and the conjectural Q-Star initiative offers an unprecedented opportunity to instigate discourse on how such advancements might reconfigure the LLM research topography. Within this milieu, insights from Dr. Jim Fan (senior research scientist & lead of AI agents at NVIDIA) on Q*, particularly concerning the amalgamation of learning and search algorithms, furnish an invaluable perspective on the prospective technical construct and proficiencies of such an undertaking5. Our research methodology involved a structured literature search using key terms like ‘Large Language Models’ and ‘Generative AI’. We utilized filters across several academic databases such as IEEE Xplore, Scopus, ACM Digital Library, ScienceDirect, Web of Science, and ProQuest Central, tailored to identify relevant articles published in the timeframe from 2017 (the release of the “Transformer” model) to 2023 (the writing time of this manuscript). This paper aspires to dissect the technical ramifications of Gemini and Q*, probing how they (and similar technologies whose emergence is now inevitable) may transfigure research trajectories and disclose new vistas in the domain of AI. In doing so, we have pinpointed three nascent research domains—MoE, multimodality, and AGI—that stand to reshape the generative AI research landscape profoundly. This investigation adopts a survey-style approach, systematically mapping out a research roadmap that synthesizes and analyzes the current and emergent trends in generative AI. + +The major contributions of this study is as follows: + + 1. + + Detailed examination of the evolving landscape in generative AI, emphasizing the advancements and innovations in technologies like Gemini and Q*, and their wide-ranging implications within the AI domain. + 2. + + Analysis of the transformative effect of advanced generative AI systems on academic research, exploring how these developments are altering research methodologies, setting new trends, and potentially leading to the obsolescence of traditional approaches. + 3. + + Thorough assessment of the ethical, societal, and technical challenges arising from the integration of generative AI in academia, underscoring the crucial need for aligning these technologies with ethical norms, ensuring data privacy, and developing comprehensive governance frameworks. + +The rest of this paper is organized as follows: Section II explores the historical development of Generative AI. Section III presents a taxonomy of current Generative AI research. Section IV explores the Mixture of Experts (MoE) model architecture, its innovative features, and its impact on transformer-based language models. Section V discusses the speculated capabilities of the Q* project. Section VI discusses the projected capabilities of AGI. Section VII examines the impact of recent advancements on the Generative AI research taxonomy. Section VIII identifies emerging research priorities in Generative AI. Section X discusses the academic challenges of the rapid surge of preprints in AI. The paper concludes in Section XI, summarizing the overall effects of these developments in generative AI. +II Background: Evolution of Generative AI + +The ascent of Generative AI has been marked by significant milestones, with each new model paving the way for the next evolutionary leap. From single-purpose algorithms to LLMs like OpenAI’s ChatGPT and the latest multimodal systems, the AI landscape has been transformed, while countless other fields have been disrupted. +II-A The Evolution of Language Models + +Language models have undergone a transformative journey (Fig. 3), evolving from rudimentary statistical methods to the complex neural network architectures that underpin today’s LLMs [36, 37]. This evolution has been driven by a relentless quest for models that more accurately reflect the nuances of human language, as well as the desire to push the boundaries of what machines can understand and generate [36, 38, 37]. However, this rapid advancement has not been without its challenges. As language models have grown in capability, so too have the ethical and safety concerns surrounding their use, prompting a reevaluation of how these models are developed and the purposes for which they are employed [36, 39, 40]. +1980s: Statistical Models (n-grams)1990s: Adoption in NLP, n-gram Usage1997: Introduction of LSTMs2000s: LSTMs in Text/Voice Processing2010s: Deep Learning Era, GPT, BERT2020s: LLaMA, Gemini; ChatGPT Launch +Figure 3: Timeline of Key Developments in Language Model Evolution +II-A1 Language Models as Precursors + +The inception of language modeling can be traced to the statistical approaches of the late 1980s, a period marked by a transition from rule-based to machine learning algorithms in Natural Language Processing (NLP) [41, 42, 43, 44, 45]. Early models, primarily n-gram based, calculated the probability of word sequences in a corpus, thus providing a rudimentary understanding of language structure [41]. Those models, simplistic yet groundbreaking, laid the groundwork for future advances in language understanding. With the increase of computational power, the late 1980s witnessed a revolution in NLP, pivoting towards statistical models capable of ‘soft’ probabilistic decisions, as opposed to the rigid, ‘handwritten’ rule-based systems that dominated early NLP systems [43]. IBM’s development of complicated statistical models throughout this period signified the growing importance and success of these approaches. In the subsequent decade, the popularity and applicability of statistical models surged, proving invaluable in managing the flourishing flow of digital text. The 1990s saw statistical methods firmly established in NLP research, with n-grams becoming instrumental in numerically capturing linguistic patterns. The introduction of Long Short-Term Memory (LSTM) networks in 1997 [46], and their application to voice and text processing a decade later [47, 48, 49], marked a significant milestone, leading to the current era where neural network models represent the cutting edge of NLP research and development. +II-A2 Large Language Models: Technical Advancement and Commercial Success + +The advent of deep learning has revolutionized the field of NLP, leading to the development of LLMs like GPT, BERT, and notably, OpenAI’s ChatGPT. Recent models such as GPT-4 and LLaMA have pushed the boundaries by integrating sophisticated techniques like transformer architectures and advanced natural language understanding, illustrating the rapid evolution in this field [37]. These models represent a significant leap in NLP capabilities, leveraging vast computational resources and extensive datasets to achieve new heights in language understanding and generation [37, 50]. ChatGPT has shown impressive conversational skills and contextual understanding with a broad spectrum of functional uses in many areas, as evidenced by its technical and commercial success, including rapid adoption by over 100 million users shortly after launch, which underscores a robust market demand for natural language AI and has catalyzed interdisciplinary research into its applications in sectors like education, healthcare, and commerce [8, 50, 51, 52, 53]. In education, ChatGPT offers innovative approaches to personalized learning and interactive teaching [54, 51, 55, 56], while in commerce, it revolutionizes customer service and content creation [57, 58]. The widespread use of ChatGPT, Google Bard, Anthropic Claude and similar commercial LLMs has reignited important debates in the field of AI, particularly concerning AI consciousness and safety, as its human-like interaction capabilities raise significant ethical questions and highlight the need for robust governance and safety measures in AI development [59, 31, 32, 11]. Such influence appears to extend beyond its technical achievements, shaping cultural and societal discussions about the role and future of AI in our world. + +The advancements in LLMs, including the development of models like GPT and BERT, have paved the way for the conceptualization of Q*. Specifically, the scalable architecture and extensive training data that characterize these models are foundational to the proposed capabilities of Q*. The success of ChatGPT in contextual understanding and conversational AI, for example, informs the design principles of Q*, suggesting a trajectory towards more sophisticated, context-aware, and adaptive language processing capabilities. Similarly, the emergence of multimodal systems like Gemini, capable of integrating text, images, audio, and video, reflects an evolutionary path that Q* could extend, combining the versatility of LLMs with advanced learning and pathfinding algorithms for a more holistic AI solution. +II-A3 Fine-tuning, Hallucination Reduction, and Alignment in LLMs + +The advancement of LLMs has underlined the significance of fine-tuning [60, 61, 62, 63], hallucination reduction [64, 65, 66, 67], and alignment [68, 69, 70, 71, 72]. These aspects are crucial in enhancing the functionality and reliability of LLMs. Fine-tuning, which involves adapting pre-trained models to specific tasks, has seen significant progress: techniques like prompt-based and few-shot learning [73, 74, 75, 76], alongside supervised fine-tuning on specialized datasets [60, 77, 78, 79], have enhanced the adaptability of LLMs in various contexts, but challenges remain, particularly in bias mitigation and the generalization of models across diverse tasks [60, 80, 72]. Hallucination reduction is a persistent challenge in LLMs, characterized by the generation of confident but factually incorrect information [36]. Strategies such as confidence penalty regularization during fine-tuning have been implemented to mitigate overconfidence and improve accuracy [81, 82, 83]. Despite these efforts, the complexity of human language and the breadth of topics make completely eradicating hallucinations a daunting task, especially in culturally sensitive contexts [36, 9]. Alignment, ensuring LLM outputs are congruent with human values and ethics, is an area of ongoing research. Innovative approaches, from constrained optimization [84, 85, 86, 87, 88], to different types of reward modeling [89, 90, 91, 92], aim to embed human preferences within AI systems. While advancements in fine-tuning, hallucination reduction, and alignment have propelled LLMs forward, these areas still present considerable challenges. The complexity of aligning AI with the diverse spectrum of human ethics and the persistence of hallucinations, particularly on culturally sensitive topics, highlight the need for continued interdisciplinary research in the development and application of LLMs [9]. +II-A4 Mixture of Experts: A Paradigm Shift + +The adoption of the MoE architecture in LLMs marks a critical evolution in AI technology. This innovative approach, exemplified by advanced models like Google’s Switch Transformer6 and MistralAI s Mixtral-8x7B7, leverages multiple transformer-based expert modules for dynamic token routing, enhancing modeling efficiency and scalability. The primary advantage of MoE lies in its ability to handle vast parameter scales, reducing memory footprint and computational costs significantly [93, 94, 95, 96, 97]. This is achieved through model parallelism across specialized experts, allowing the training of models with trillions of parameters, and its specialization in handling diverse data distributions enhances its capability in few-shot learning and other complex tasks [94, 95]. To illustrate the practicality of MoE, consider its application in healthcare. For example, an MoE-based system could be used for personalized medicine, where different ‘expert’ modules specialize in various aspects of patient data analysis, including genomics, medical imaging, and electronic health records. This approach could significantly enhance diagnostic accuracy and treatment personalization. Similarly, in finance, MoE models can be deployed for risk assessment, where experts analyze distinct financial indicators, market trends, and regulatory compliance factors. + +Despite its benefits, MoE confronts challenges in dynamic routing complexity [98, 99, 100, 101, 102], expert imbalance [103, 104, 105, 106], and probability dilution [107], and such technical hurdles demand sophisticated solutions to fully harness MoE’s potential. Moreover, while MoE may offer performance gains, it does not inherently solve ethical alignment issues in AI [108, 109, 110]. The complexity and specialization of MoE models can obscure the decision-making processes, complicating efforts to ensure ethical compliance and alignment with human values [108, 111]. Although the paradigm shift to MoE signifies a major leap in LLM development, offering significant scalability and specialization advantages, ensuring the safety, ethical alignment, and transparency of these models remains a paramount concern. The MoE architecture, while technologically advanced, entails continued interdisciplinary research and governance to align AI with broader societal values and ethical standards. +II-B Multimodal AI and the Future of Interaction + +The advent of multimodal AI marks a transformative era in AI development, revolutionizing how machines interpret and interact with a diverse array of human sensory inputs and contextual data. +II-B1 Gemini: Redefining Benchmarks in Multimodality + +Gemini, a pioneering multimodal conversational system, marks a significant shift in AI technology by surpassing traditional text-based LLMs like GPT-3 and even its multimodal counterpart, ChatGPT-4. Gemini’s architecture has been designed to incorporate the processing of diverse data types such as text, images, audio, and video, a feat facilitated by its unique multimodal encoder, cross-modal attention network, and multimodal decoder [112]. The architectural core of Gemini is its dual-encoder structure, with separate encoders for visual and textual data, enabling sophisticated multimodal contextualization [112]. This architecture is believed to surpass the capabilities of single-encoder systems, allowing Gemini to associate textual concepts with image regions and achieve a compositional understanding of scenes [112]. Furthermore, Gemini integrates structured knowledge and employs specialized training paradigms for cross-modal intelligence, setting new benchmarks in AI [112]. In [112], Google has claimed and demonstrated that Gemini distinguishes itself from ChatGPT-4 through several key features: + + • + + Breadth of Modalities: Unlike ChatGPT-4, which primarily focuses on text, documents, images, and code, Gemini handles a wider range of modalities including audio, and video. This extensive range allows Gemini to tackle complex tasks and understand real-world contexts more effectively. + • + + Performance: Gemini Ultra excels in key multimodality benchmarks, notably in massive multitask language understanding (MMLU) which encompasses a diverse array of domains like science, law, and medicine, outperforming ChatGPT-4. + • + + Scalability and Accessibility: Gemini is available in three tailored versions – Ultra, Pro, and Nano – catering to a range of applications from data centers to on-device tasks, a level of flexibility not yet seen in ChatGPT-4. + • + + Code Generation: Gemini’s proficiency in understanding and generating code across various programming languages is more advanced, offering practical applications beyond ChatGPT-4’s capabilities. + • + + Transparency and Explainability: A focus on explainability sets Gemini apart, as it provides justifications for its outputs, enhancing user trust and understanding of the AI’s reasoning process. + +Despite these advancements, Gemini’s real-world performance in complex reasoning tasks that require integration of commonsense knowledge across modalities remains to be thoroughly evaluated. +II-B2 Technical Challenges in Multimodal Systems + +The development of multimodal AI systems faces several technical hurdles, including creating robust and diverse datasets, managing scalability, and enhancing user trust and system interpretability [113, 114, 115]. Challenges like data skew and bias are prevalent due to data acquisition and annotation issues, which requires effective dataset management by employing strategies such as data augmentation, active learning, and transfer learning [113, 116, 80, 115]. A significant challenge is the computational demands of processing various data streams simultaneously, requiring powerful hardware and optimized model architectures for multiple encoders [117, 118]. Advanced algorithms and multimodal attention mechanisms are needed to balance attention across different input media and resolve conflicts between modalities, especially when they provide contradictory information [119, 120, 118]. Scalability issues, due to the extensive computational resources needed, are exacerbated by limited high-performance hardware availability [121, 122]. There is also a pressing need for calibrated multimodal encoders for compositional scene understanding and data integration [120]. Refining evaluation metrics for these systems is necessary to accurately assess performance in real-world tasks, calling for comprehensive datasets and unified benchmarks, and for enhancing user trust and system interpretability through explainable AI in multimodal contexts. Addressing these challenges is vital for the advancement of multimodal AI systems, enabling seamless and intelligent interaction aligned with human expectations. +II-B3 Multimodal AI: Beyond Text in Ethical and Social Contexts + +The expansion of multimodal AI systems introduces both benefits and complex ethical and social challenges that extend beyond those faced by text-based AI. In commerce, multimodal AI can transform customer engagement by integrating visual, textual, and auditory data [123, 124, 125]. For autonomous vehicles, multimodality can enhance safety and navigation by synthesizing data from various sensors, including visual, radar, and Light Detection and Ranging (LIDAR) [126, 125, 127]. Still, DeepFake technology’s ability to generate convincingly realistic videos, audio, and images is a critical concern in multimodality, as it poses risks of misinformation and manipulation that significantly impact public opinion, political landscapes, and personal reputations, thereby compromising the authenticity of digital media and raising issues in social engineering and digital forensics where distinguishing genuine from AI-generated content becomes increasingly challenging [128, 129]. Privacy concerns are amplified in multimodal AI due to its ability to process and correlate diverse data sources, potentially leading to intrusive surveillance and profiling, which raises questions about the consent and rights of individuals, especially when personal media is used without permission for AI training or content creation [113, 130, 131]. Moreover, multimodal AI can propagate and amplify biases and stereotypes across different modalities, and if unchecked, this can perpetuate discrimination and social inequities, making it imperative to address algorithmic bias effectively [132, 133, 134]. The ethical development of multimodal AI systems requires robust governance frameworks focusing on transparency, consent, data handling protocols, and public awareness, when ethical guidelines must evolve to address the unique challenges posed by these technologies, including setting standards for data usage and safeguarding against the nonconsensual exploitation of personal information [135, 136]. Additionally, the development of AI literacy programs will be crucial in helping society understand and responsibly interact with multimodal AI technologies [113, 135]. As the field progresses, interdisciplinary collaboration will be key in ensuring these systems are developed and deployed in a manner that aligns with societal values and ethical principles [113]. +II-C Speculative Advances and Chronological Trends + +In the dynamic landscape of AI, the speculative capabilities of the Q* project, blending LLMs, Q-learning, and A* (A-Star algorithm), embodies a significant leap forward. This section explores the evolutionary trajectory from game-centric AI systems to the broad applications anticipated with Q*. +II-C1 From AlphaGo’s Groundtruth to Q-Star’s Exploration + +The journey from AlphaGo, a game-centric AI, to the conceptual Q-Star project represents a significant paradigm shift in AI. AlphaGo’s mastery in the game of Go highlighted the effectiveness of deep learning and tree search algorithms within well-defined rule-based environments, underscoring the potential of AI in complex strategy and decision-making [137, 138]. Q-Star, however, is speculated to move beyond these confines, aiming to amalgamate the strengths of reinforcement learning (as seen in AlphaGo), with the knowledge, NLG, creativity and versatility of LLMs, and the strategic efficiency of pathfinding algorithms like A*. This blend, merging pathfinding algorithms and LLMs, could enable AI systems to transcend board game confines and, with Q-Star’s natural language processing, interact with human language, enabling nuanced interactions and marking a leap towards AI adept in both structured tasks and complex human-like communication and reasoning. Moreover, the incorporation of Q-learning and A* algorithms would enable Q-Star to optimize decision paths and learn from its interactions, making it more adaptable and intelligent over time. The combination of these technologies could lead to AI that is not only more efficient in problem-solving but also creative and insightful in its approach. This speculative advancement from the game-focused power of AlphaGo to the comprehensive potential of Q-Star illustrates the dynamic and ever-evolving nature of AI research, and opens up possibilities for AI applications that are more integrated with human life and capable of handling a broader range of tasks with greater autonomy and sophistication. +II-C2 Bridging Structured Learning with Creativity + +The anticipated Q* project, blending Q-learning and A* algorithms with the creativity of LLMs, embodies a groundbreaking step in AI, potentially surpassing recent innovations like Gemini. The fusion suggested in Q* points to an integration of structured, goal-oriented learning with generative, creative capabilities, a combination that could transcend the existing achievements of Gemini. While Gemini represents a significant leap in multimodal AI, combining various forms of data inputs such as text, images, audio, and video, Q* is speculated to bring a more profound integration of creative reasoning and structured problem-solving. This would be achieved by merging the precision and efficiency of algorithms like A* with the learning adaptability of Q-learning, and the complex understanding of human language and context offered by LLMs. Such an integration could enable AI systems to not only process and analyze complex multimodal data but also to autonomously navigate through structured tasks while engaging in creative problem-solving and knowledge generation, mirroring the multifaceted nature of human cognition. The implications of this potential advancement are vast, suggesting applications that span beyond the capabilities of current multimodal systems like Gemini. By aligning the deterministic aspects of traditional AI algorithms with the creative and generative potential of LLMs, Q* could offer a more holistic approach to AI development. This could bridge the gap between the logical, rule-based processing of AI and the creative, abstract thinking characteristic of human intelligence. The anticipated unveiling of Q*, merging structured learning techniques and creative problem-solving in a singular, advanced framework, holds the promise of not only extending but also significantly surpassing the multimodal capabilities of systems like Gemini, thus heralding another game-changing era in the domain of generative AI, showcasing its potential as a crucial development eagerly awaited in the ongoing evolution of AI. + + +X Impact of Generative AI on Preprints Across Disciplines + +The challenges detailed in this section are not directly related to the knowledge domains within generative AI, but are fueled by the success of Generative AI, particularly the commercialization of ChatGPT. The proliferation of preprints in the field of AI (Fig. 7), especially in the cs.AI category on platforms like arXiv, has introduced a set of academic challenges that merit careful consideration and strategic response. The rapid commercialization and adoption of tools such as ChatGPT, as evidenced by over 55,700 entries on Google Scholar mentioning “ChatGPT” within just one year of its commercialization, exemplify the accelerated pace at which the field is advancing. This rapid development is not mirrored in the traditional peer-review process, which is considerably slower. The peer-review process now appears to be overwhelmed with manuscripts that are either generated with ChatGPT (or other LLMs), or whose writing processes have been significantly accelerated by such LLMs, contributing to a bottleneck in scholarly communication [325, 326]. This situation is further compounded by the fact that many journals in disciplines outside of computer science are also experiencing longer review times and higher rates of desk rejections. Additionally, the flourishing trend of manuscripts and preprints, either generated by or significantly expedited using tools like ChatGPT, extends beyond computer science into diverse academic disciplines. This trend presents a looming challenge, potentially overwhelming both the traditional peer-review process and the flourishing preprint ecosystem with a volume of work that may not always adhere to established academic standards. + + +The sheer volume of preprints has made the task of selecting and scrutinizing research exceedingly demanding. In the current research era, the exploration of scientific literature has become increasingly complex, as knowledge has continued to expand and disseminate exponentially, while concurrently, integrative research efforts attempting to distill these vast literature, attempt to identify and understand a smaller sets of core contributions [327]. Thus, the rapid expansion of academic literature across various fields presents a significant challenge for researchers seeking to perform evidence syntheses over the increasingly vast body of available knowledge [328]. Furthermore, this explosion in publication volume poses a distinct challenge for literature reviews and surveys, where the human capacity for manually selecting, understanding, and critically evaluating articles is increasingly strained, potentially leading to gaps in synthesizing comprehensive knowledge landscapes. Although reproduction of results is a theoretical possibility, practical constraints such as the lack of technical expertise, computational resources, or access to proprietary datasets hinder rigorous evaluation. This is concerning, as the inability to thoroughly assess preprint research undermines the foundation of scientific reliability and validity. Furthermore, the peer-review system, a cornerstone of academic rigour, is under the threat of being further overwhelmed [325, 329]. The potential consequences are significant, with unvetted preprints possibly perpetuating biases or errors within the scientific community and beyond. The absence of established retraction mechanisms for preprints, akin to those for published articles, exacerbates the risk of persistent dissemination of flawed research. + +The academic community is at a crossroads, necessitating an urgent and thoughtful discourse on navigating this emerging “mess” — a situation that risks spiraling out of control if left unaddressed. In this context, the role of peer review becomes increasingly crucial, as it serves as a critical checkpoint for quality and validity, ensuring that the rapid production of AI research is rigorously studied for scientific accuracy and relevance. However, the current modus operandi of traditional peer review does not appear to be sustainable, primarily due to its inability to keep pace with the exponential growth in AI-themed research and Generative-AI-accelerated research submissions, and the increasingly specialized nature of emerging AI topics [325, 326]. This situation is compounded by a finite pool of qualified reviewers, leading to delays, potential biases, and a burden on the scholarly community. This reality demands an exploration of new paradigms for peer review and dissemination of research that can keep pace with swift advancements in AI. Innovative models for community-driven vetting processes, enhanced reproducibility checks, and dynamic frameworks for post-publication scrutiny and correction may be necessary. Efforts to incorporate automated tools and AI-assisted review processes could also be explored to alleviate the strain on human reviewers. + +In this rapidly evolving landscape, envision a convergence between the traditional peer review system and the flourishing preprint ecosystem, which could involve creating hybrid models (Fig. 8), where preprints undergo a preliminary community-based review, harnessing the collective expertise and rapid feedback of the academic community, similar to product review websites and Twitter [330]. This approach could provide an initial layer of validation, offering additional insights on issues that may be overlooked by a limited number of peer reviewers. The Editors-in-Chief (EICs) could consider the major criticisms and suggestions of an article from the community-based review, ensuring a more thorough and diverse evaluation. Subsequent, more formal peer review processes could then refine and endorse these preprints for academic rigor and quality assurance. This hybrid model would require robust technological support, possibly leveraging AI and machine learning tools to assist in initial screening and identification of suitable reviewers. The aim would be to establish a seamless continuum from rapid dissemination to validated publication, ensuring both the speed of preprints and the credibility of peer-reviewed research. A balanced approach must be struck to harness the benefits of preprints—such as rapid dissemination of findings and open access—while mitigating their drawbacks. The development of new infrastructure and norms could be instrumental in steering the academic community towards a sustainable model that upholds the integrity and trustworthiness of scientific research in the age of Generative AI. + +XI Conclusions + +This roadmap survey has embarked on an exploration of the transformative trends in generative AI research, particularly focusing on speculated advancements like Q* and the progressive strides towards AGI. Our analysis highlights a crucial paradigm shift, driven by innovations such as MoE, multimodal learning, and the pursuit of AGI. These advancements signal a future where AI systems could significantly extend their capabilities in reasoning, contextual understanding, and creative problem-solving. This study reflects on AI’s dual potential to either contribute to or impede global equity and justice. The equitable distribution of AI benefits and its role in decision-making processes raise crucial questions about fairness and inclusivity. It is imperative to thoughtfully integrate AI into societal structures to enhance justice and reduce disparities. Despite these advancements, several open questions and research gaps remain. These include ensuring the ethical alignment of advanced AI systems with human values and societal norms, a challenge compounded by their increasing autonomy. The safety and robustness of AGI systems in diverse environments also remain a significant research gap. Addressing these challenges requires a multidisciplinary approach, incorporating ethical, social, and philosophical perspectives. + +Our survey has highlighted key areas for future interdisciplinary research in AI, emphasizing the integration of ethical, sociological, and technical perspectives. This approach will foster collaborative research, bridging the gap between technological advancement and societal needs, ensuring that AI development is aligned with human values and global welfare. The roles of MoE, multimodal, and AGI in reshaping generative AI have been identified as significant, as their advancements can enhance model performance and versatility, and pave the way for future research in areas like ethical AI alignment and AGI. As we forge ahead, the balance between AI advancements and human creativity is not just a goal but a necessity, ensuring AI’s role as a complementary force that amplifies our capacity to innovate and solve complex challenges. Our responsibility is to guide these advancements towards enriching the human experience, aligning technological progress with ethical standards and societal well-being.