首页 > 其他分享 >13个开源类ChatGPT模型

13个开源类ChatGPT模型

时间:2023-04-26 14:59:41浏览次数:47  
标签:13 Alpaca -- 模型 开源 LLaMA GPT ChatGPT model

在本文中,我们将解释开源 ChatGPT 模型的工作原理以及如何运行它们。我们将涵盖十三种不同的开源模型,即LLaMA,Alpaca,GPT4All,GPT4All-J,Dolly 2,Cerebras-GPT,GPT-J 6B,Vicuna,Alpaca GPT-4,OpenChatKit,ChatRWKV,Flan-T5和OPT。在本文结束时,您应该对这些模型有很好的了解,并且应该能够在 Python 中运行它们。

ChatGPT不是开源的。它最近有两个流行的版本GPT-3.5和GPT-4。GPT-4 比 GPT-3.5 有重大改进,并且在产生响应方面更准确。ChatGPT 不允许您查看或修改源代码,因为它不是公开可用的。因此,需要开源且免费提供的模型。通过使用这些开源模型,您无需为 OpenAI API 付费即可访问它们。

开源 ChatGPT 模型的优势

使用开源大型语言模型有很多好处,这些模型是 ChatGPT 的替代品。下面列出了其中一些。

  1. 数据隐私:许多公司都希望控制数据。这对他们来说很重要,因为他们不希望任何第三方访问他们的数据。
  2. 定制:它允许开发人员使用自己的数据训练大型语言模型,如果他们想应用某些主题,可以对某些主题进行一些过滤
  3. 经济实惠:开源 GPT 模型可让您训练复杂的大型语言模型,而无需担心昂贵的硬件。
  4. 人工智能民主化:它为进一步的研究开辟了空间,可用于解决现实世界的问题。

LLaMA

简介 : LLaMA

LLaMA 代表 大型语言模型元 AI。它包括从 7 亿到 65 亿个参数的一系列模型大小。Meta AI 研究人员专注于通过增加训练数据量而不是参数数量来扩展模型的性能。他们声称 13 亿个参数模型的性能优于 GPT-175 模型的 3 亿个参数。它使用转换器架构,并通过网络抓取维基百科,GitHub,Stack Exchange,古腾堡项目的书籍,ArXiv上的科学论文提取了1.4万亿个代币。

Python Code : LLaMA

# Install Package
pip install llama-cpp-python

from llama_cpp import Llama
llm = Llama(model_path="./models/7B/ggml-model.bin")
output = llm("Q: Name the planets in the solar system? A: ", max_tokens=128, stop=["Q:", "\n"], echo=True)
print(output)
在模型路径中,您需要具有 GGML 格式的 LLaMA 权重,然后将其存储到模型文件夹中。你可以在拥抱脸网站上搜索它。在此处查看其中之一

Alpaca

简介 : Alpaca

斯坦福大学的一组研究人员开发了一种名为 .它基于元维基的大规模语言模型。该团队使用OpenAI的GPT API(text-davinci-003)来微调LLaMA 7亿(7B)参数大小的模型。该团队的目标是让每个人都能免费获得人工智能,以便院士可以进行进一步的研究,而不必担心执行这些内存密集型算法的昂贵硬件。尽管这些开源模型不可用于商业用途,但小型企业仍然可以利用它来构建自己的聊天机器人。AlpacaLLaMA

Alpaca如何工作

斯坦福大学团队从LLaMA模型中最小的语言模型开始研究,即LLaMA 7B模型,并用1万亿个代币对其进行预训练。他们从自指令种子集中的 175 个人类编写的指令输出对开始。然后,他们使用OpenAI API要求ChatGPT使用种子集生成更多指令。它将获得大约52,000个样本对话,该团队使用这些样本来使用Hugging Face的训练框架进一步微调LLaMA模型。

 

LLaMA 有多种尺寸 - 7B、13B、30B 和 65B 参数。Alpaca也扩展到13B,30B和65B型号。

性能 : Alpaca

Alpaca 模型在电子邮件创建、社交媒体和生产力工具等任务中与 ChatGPT 进行了测试,Alpaca 赢了 90 次,而 ChatGPT 赢了 89 次。该模型可以在现实世界中用于各种目的。这将对研究人员进行道德人工智能和网络安全活动(如检测诈骗和网络钓鱼)有很大帮助。

限制:Alpaca

与ChatGPT的商业版本一样,Alpaca也有类似的局限性,即遭受幻觉,毒性和刻板印象。换言之,它可以用来生成文本,向社会弱势群体传播错误信息、种族主义和仇恨。

内存要求 : Alpaca

它不能在CPU上运行,需要GPU。对于 7B 和 13B 型号,它需要一个具有 12GB RAM 的 GPU。对于 30B 型号,您需要更多系统资源。

Python代码:Alpaca

我已经创建了Colab代码。您可以使用它作为参考。由于我使用的是 Colab 的免费版本,因此我运行的是最小的型号 7B。您可以将其更改为 13B 和 30B。

与 ChatGPT 的商业界面类似,代码的输出会在 Gradio 中创建 Web 界面。此外,您可以将此界面用于演示目的并与同事或客户共享。

使用 Python 3.9 创建环境
import sys
sys.path.append("/usr/local/lib/python3.9/site-packages")
以下命令是用于显示有关 GPU 使用情况和性能的信息的命令。nvidia-smi
!nvidia-smi
下载 Git 存储库
!git clone https://github.com/deepanshu88/Alpaca-LoRA-Serve.git
安装所需的软件包
%cd Alpaca-LoRA-Serve
!python3.9 -m pip install -r requirements.txt
选择模型的大小
base_model = 'decapoda-research/llama-7b-hf'
finetuned_model = 'tloen/alpaca-lora-7b'
运行应用程序
!python3.9 app.py --base_url $base_model --ft_ckpt_url $finetuned_model --share
完整代码
import sys
sys.path.append("/usr/local/lib/python3.9/site-packages")

!nvidia-smi
!git clone https://github.com/deepanshu88/Alpaca-LoRA-Serve.git
  
%cd Alpaca-LoRA-Serve
!python3.9 -m pip install -r requirements.txt
  
base_model = 'decapoda-research/llama-7b-hf'
finetuned_model = 'tloen/alpaca-lora-7b'

!python3.9 app.py --base_url $base_model --ft_ckpt_url $finetuned_model --share

上面的代码支持比 7B 更大的语言模型。请参阅下面的参考资料。7B和13B可以在colab的免费版本中使用。对于30B,您需要购买高级版的colab。

可能的值为--base_url
  
- decapoda-research/llama-7b-hf
- decapoda-research/llama-13b-hf
- decapoda-research/llama-30b-hf
  可能的值为--ft_ckpt_url
  
- tloen/alpaca-lora-7b
- chansung/alpaca-lora-13b
- chansung/alpaca-lora-30b

输出 : Alpaca

请参阅下面的输出,其中我问了两个相对两个相对简单的问题。一个与通用主题有关,另一个与编码有关。它正确地回答了这两个问题。


GPT4All

简介 : GPT4All

Nomic AI 团队从 Alpaca 中汲取灵感,使用 GPT-3.5-Turbo OpenAI API 收集了大约 800,000 个提示响应对,以创建 430,000 个助理式提示和世代的训练对,包括代码、对话和叙述。800K对大约是Alpaca的16倍。该模型最好的部分是它可以在CPU上运行,不需要GPU。像Alpaca一样,它也是一个开源,可以帮助个人进行进一步的研究,而无需花费商业解决方案。

GPT4All 如何工作

它的工作原理类似于Alpaca,并基于LLaMA 7B模型。该团队对LLaMA 7B的模型进行了微调,最终模型在437,605个后处理助手式提示上进行了训练。

性能 : GPT4All

在自然语言处理中,困惑用于评估语言模型的质量。它根据其训练数据衡量语言模型看到以前从未遇到过的新单词序列的惊讶程度。较低的困惑度值表示语言模型更擅长预测序列中的下一个单词,因此更准确。Nomic AI团队声称他们的模型比Alpaca具有更低的困惑度。真正的准确性取决于您的提示类型。在某些情况下,Alpaca可能具有更好的准确性。

内存要求 : GPT4All

它可以在具有8GB RAM的CPU上运行。如果您有一台具有4GB RAM的笔记本电脑,可能是时候升级到至少8G

Python 代码 : GPT4All

Colab 代码可供您使用。您可以将其用作参考,根据需要对其进行修改,甚至可以按原样运行。完全由您决定如何使用代码来最好地满足您的要求。

克隆 Git 存储库
!git clone --recurse-submodules https://github.com/nomic-ai/gpt4all.git
安装所需的软件包
cd /content/gpt4all
!python -m pip install -r requirements.txt

cd transformers
!pip install -e .

cd ../peft
!pip install -e .
训练
!accelerate launch --dynamo_backend=inductor --num_processes=8 --num_machines=1 --machine_rank=0 --deepspeed_multinode_launcher standard --mixed_precision=bf16  --use_deepspeed --deepspeed_config_file=configs/deepspeed/ds_config.json train.py --config configs/train/finetune.yaml
下载 CPU 量化 gpt4all 模型检查点
cd /content/gpt4all/chat
!wget https://the-eye.eu/public/AI/models/nomic-ai/gpt4all/gpt4all-lora-quantized.bin
运行会话系统
!./gpt4all-lora-quantized-linux-x86

如果您在运行在 linux 以外的任何其他操作系统上的本地计算机上运行此功能,请使用以下命令而不是上面的行。

  
Windows (PowerShell): ./gpt4all-lora-quantized-win64.exe
Mac (M1): ./gpt4all-lora-quantized-OSX-m1
Mac (Intel): ./gpt4all-lora-quantized-OSX-intel
完整代码
!git clone --recurse-submodules https://github.com/nomic-ai/gpt4all.git

cd /content/gpt4all
!python -m pip install -r requirements.txt

cd transformers
!pip install -e .

cd ../peft
!pip install -e .

!accelerate launch --dynamo_backend=inductor --num_processes=8 --num_machines=1 --machine_rank=0 --deepspeed_multinode_launcher standard --mixed_precision=bf16  --use_deepspeed --deepspeed_config_file=configs/deepspeed/ds_config.json train.py --config configs/train/finetune.yaml

cd /content/gpt4all/chat
!wget https://the-eye.eu/public/AI/models/nomic-ai/gpt4all/gpt4all-lora-quantized.bin

!./gpt4all-lora-quantized-linux-x86

输出 : GPT4All

GPT4All 无法正确回答与编码相关的问题。这只是一个例子,无法根据它判断准确性。它可能在其他提示中运行良好,因此模型的准确性取决于您的使用情况。此外,当我在 2 天后再次运行它时,它适用于与编码相关的问题。他们似乎进一步完善了模型。


错误调试

Distributed package doesn't have NCCL

如果您在 Mac 操作系统上遇到此问题,那是因为您的计算机上未安装 CUDA。

Windows 10/11 上的问题

一些用户报告说他们在Windows平台上遇到了一些奇怪的错误。作为最后的手段,您可以安装适用于Linux的Windows子系统,它允许您在Windows机器上安装Linux发行版,然后可以按照上面的代码进行操作。

GPT4All-J

您一定想知道这个模型除了后缀“J”之外的名称与前一个模型相似。这是因为这两个模型都来自Nomic AI的同一团队。唯一的区别是它现在在 GPT-J 上训练,而不是 LLaMa。在 GPT-J 上训练它的好处是 GPT4All-J 现在是 Apache-2 许可的,这意味着您可以将其用于商业目的,也可以轻松地在您的机器上运行。

下载安装程序文件

根据您的操作系统下载以下安装程序文件。安装完成后,您需要在进行安装的文件夹中导航“bin”目录。要启动 GPT4All 聊天应用程序,请在“bin”文件夹中执行“聊天”文件。该文件将在Linux上命名为“chat”,在Windows上命名为“chat.exe”,在macOS上命名为“chat.app”

  1. 窗户
  2. Linux目录
  3. 苹果操作系统

Dolly 2

Databricks团队基于EleutherAI的Pythia模型创建了大型语言模型,后来他们对大约15,000个记录指令语料库进行了微调。它属于Apache 2许可证,这意味着训练它的模型,训练代码,数据集和模型权重都可以作为开源提供,因此您可以将其用于商业用途来创建自己的自定义大型语言模型。

它有三种尺寸 - 12B、7B 和 3B 参数。
  
databricks/dolly-v2-12b on pythia-12b
databricks/dolly-v2-7b  on pythia-6.9b
databricks/dolly-v2-3b  on pythia-2.8b

内存要求 : Dolly 2

对于具有 10 位量化的 7B 型号,它需要一个具有大约 8GB RAM 的 GPU。对于 12B 型号,它至少需要 18GB GPU vRAM。

Python代码:Dolly2

from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
  
baseModel = "databricks/dolly-v2-12b"
load_8bit = True  
tokenizer = AutoTokenizer.from_pretrained("databricks/dolly-v2-12b")
model = AutoModelForCausalLM.from_pretrained(baseModel, load_in_8bit=load_8bit, torch_dtype=torch.float16, device_map="auto")
generator = pipeline(task='text-generation', model=model, tokenizer=tokenizer)

print(generator("Python code to remove duplicates from dataframe"))

Vicuna

简介 : Vicuma

来自加州大学伯克利分校,CMU,斯坦福大学和加州大学圣地亚哥分校的研究人员团队开发了这个模型。它使用从ShareGPT网站提取的聊天数据集在LLaMA上进行微调。研究人员声称该模型在90%的质量上得分超过OpenAI ChatGPT-4。值得注意的是,它的性能几乎与Bard相当。他们使用了Alpaca的训练计划,并在两个方面进一步改进 - 多轮对话和长序列。

Python代码:Vicuna

您可以参考这篇文章 - LLaMA详细指南来访问python代码和Vicuna模型的详细说明。

Alpaca GPT-4 Model

简介 : Alpaca GPT-4

您已经在本文的上一节中了解了Alpaca。在这里,一些研究人员通过在 GPT-4 数据集上训练它来改进原始的 Alpaca 模型。请记住,斯坦福大学研究人员的原始Alpaca模型是基于GPT-3模型的。此 GPT-4 模型在 LLaMA 13 亿 (13B) 参数大小的模型上进行训练。

Python代码:Alpaca GPT-4

Alpaca GPT-4模型的Python程序在这里解释 - Alpaca GPT-4详细指南

Cerebras-GPT

简介 : Cerebras-GPT

你们中的一些人以前可能没有听说过。他们不像以制造GPU而闻名的NVIDIA那样出名,但他们也是一家专门制造高性能计算系统的技术公司。他们最近发布了包含七个基于 GPT 的语言模型的开源项目,大小分别为 111.256 亿、590.1 亿、3.2 亿、7 亿、6 亿、7 亿和 13 亿个参数。Cerebras Systems

这些模型最好的部分是它们是免费提供的,并且可以将其用于商业目的,因为它属于Apache 2.0许可证,而LLaMA带有“非商业”许可证,这意味着它们是免费的,但只能用于研究目的。

此外,它们还有 7 种不同尺寸的型号可供选择,这意味着您可以根据硬件配置选择很多型号。如果您的硬件不允许试验大型模型,请选择较小的模型。

内存要求 : Cerebras-GPT

它需要具有 12GB RAM 的 GPU 来运行 1.3B 参数大小的 Cerebras-GPT 模型。

Python 代码:Cerebras-GPT

在下面的程序中,我们使用由随机公司团队开发的python包。它允许开发人员有效地微调不同的大型语言模型。它们还使语法非常易读且易于理解。xTuring

在这里,我们使用Alpaca dataset

可以参考此 Colab 代码进行测试。在下面的代码中,我们使用Cerebras-GPT 1.3B模型

安装xturing
!pip install xturing --upgrade
生成数据集
!wget https://d33tr4pxdm6e2j.cloudfront.net/public_content/tutorials/datasets/alpaca_data.zip
!unzip alpaca_data.zip
加载数据集并初始化模型
from xturing.datasets.instruction_dataset import InstructionDataset
from xturing.models.base import BaseModel

instruction_dataset = InstructionDataset("/content/alpaca_data")
# Initializes the model
model = BaseModel.create("cerebras_lora_int8")
微调模型
model.finetune(dataset=instruction_dataset)
构建聊天机器人
output = model.generate(texts=["prime minister of India?"])
print("Generated output by the model: {}".format(output))
微调模型需要大量的处理时间,因此必须非常耐心。微调完成后,您可以保存模型以供将来参考。
# Save Model
model.save("/path_directory")

# Load a fine-tuned model
finetuned_model = BaseModel.load("/path_directory")

In case the loading model returns error AssertionError: We were not able to find the xturing.json file in this directory, use the code below.
model = BaseModel.create("cerebras",weights_path="/path_directory")

GPT-J 6B

简介 : GPT-J 6B

GPT-J 6B由EleutherAI的研究人员开发。这不是一个新模型,因为它是在 2021 年下半年发布的。它有 6 亿个参数。它没有 Meta 的 LLaMA 那么大,但它在各种自然语言处理任务(如聊天、摘要和问答)上表现良好。模型尺寸大并不一定意味着更准确。它在 TPU v402-3 Pod 上训练了 256 亿个代币。

与 Cerebras-GPT 一样,GPT-J 6B 也根据 Apache 2.0 许可证获得许可,该许可证允许您将其用于商业目的。

Python代码:GPT-J 6B

您可以参考 colab 笔记本进行尝试。

GPT-J 6B 的 Python 代码类似于 Cerebras-GPT 的代码。唯一的变化是初始化基本模型,而不是BaseModel.create("gptj_lora_int8")BaseModel.create("cerebras_lora_int8")

OpenChatKit Model

简介 : OpenChatKit

OpenChatKit是一个用于创建聊天机器人的开源大型语言模型,由Together开发。他们与LAION和Ontocord合作创建了训练数据集。它采用 Apache-2.0 许可证,可以完全访问源代码、模型权重和训练数据集。该项目的目的是促进开源基础模型的包容性、透明度和健壮性。它擅长执行各种任务,包括上下文中的摘要和问答,信息提取和文本分类。

它有 20 亿个参数在 43 万个指令大小的训练数据集上训练。它被称为它还有一个基于ElutherAI的Pythia-7B模型的模型,称为7B参数语言模型。GPT-NeoXT-Chat-Base-20BPythia-Chat-Base-7B

演示 : OpenChatKit

您可以在Hugging Face网站上查看该模型的演示

内存要求 : OpenChatKit

Pythia-Chat-Base-7B可以在具有12GB RAM的单个GPU上运行。

Python 代码:Pythia-chat-base-7B

您可以将 colab notebook 用于 Pythia-Chat-Base-7B

# GPU Configuration
!nvidia-smi

# Install conda
!wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && chmod +x Miniconda3-latest-Linux-x86_64.sh && ./Miniconda3-latest-Linux-x86_64.sh -b -f -p /usr/local

# Setting up conda environment
!conda install mamba -n base -c conda-forge -y

!git clone https://github.com/orangetin/OpenChatKit.git --branch colab-example && cd OpenChatKit && mamba env create -f environment.yml
!source activate OpenChatKit && pip install bitsandbytes

# Download and run model
!source activate OpenChatKit && python OpenChatKit/inference/bot.py --model togethercomputer/Pythia-Chat-Base-7B --load-in-8bit

ChatRWKV

简介 : ChatRWKV

ChatRWKV由RWKV(100%RNN)语言模型提供支持,这是唯一可以在质量和缩放方面与变压器相匹配的RNN,同时速度更快并节省VRAM。该模型在 Alpaca,代码Alpaca数据集上进行了微调。

演示 : ChatRWKV

该模型的演示可在拥抱脸网站上找到

Python 代码 : ChatRWKV

您可以使用 github 上可用的代码构建 Web 界面

弗兰-T5

谷歌发布了开源LLM模型Flan-T5。它是多语言的,并使用指令微调来提高预训练语言模型的性能和可用性。它是 T5 的一种变体,在许多自然语言处理任务中可以更好地概括并优于 T5。

选择

OPT是Meta在LLaMA之前发布的语言模型。当LLaMA发布时,它的表现优于OPT.OPT是一个现在不应该考虑的模型,因为市场上已经有许多更好的开源模型,如上所示。

GPT 模型的比较

Alpaca GPT-4 和LLaMA模型是所有开源模型中最准确、最一致的模型。如果您可以使用高功率机器,则建议使用这两种型号。在内存要求方面,GPT4ALL 不需要昂贵的硬件,可以在具有 8GB RAM 的 CPU 上运行。如果您有预算/低端机器,那就去吧。它在准确性方面也不妥协。如果您想将该模型用于商业目的,请选择GPT4All-J,Dolly 2,OpenChatKit,Cerebras-GPT和GPT-J 6B。它们允许您分发软件以供商业使用。

标签:13,Alpaca,--,模型,开源,LLaMA,GPT,ChatGPT,model
From: https://www.cnblogs.com/botai/p/open-source-chatgpt-models.html

相关文章

  • 13种权重的计算方法
    权重计算方法有很多种,不同的方法有不同的特点和适用情况。AHP层次分析法和熵值法在权重计算中属于比较常用的方法。除此之外,还有一些与权重计算相关的方法,今天一文总结了13种与权重计算相关的方法,大家可以对比选择使用。一、13种权重计算方法一句话简单描述13种权重计算方法,见......
  • 胎教级培训手册:四步让ChatGPT成为小红书爆款大师
    文/高扬 最近公众号更新有些慢,因为我在配合陈楚做小红书。 ChatGPT用在小红书上具有天然优势,然后再接合AI绘画,更是绝配。 AI绘画,陈楚已经研究很久了,后续会不断地输出教程。 学太多ChatGPT技巧,大家好像并没有感觉到能带来什么好处,可是,假如ChatGPT能给自己带来切身利......
  • net::ERR_FAILED 413
    后台收不到post请求,前端报错413具体情况如下: 开始以为是跨域又有问题,进一步发现是上传的图片文件过大。Node.js环境中koa框架使用还不熟练。参考笔记-node.jskoa框架。请求体过大报413错误-简书(jianshu.com)引入koa-bodyparser 挂载配置,将文件大小设置为不超过10MB......
  • 【ChatGPT】ChatGPT的部署
    1.模型训练:使用大规模训练数据集对ChatGPT模型进行训练,以提高模型的准确性和适用性。训练好的模型可以保存为一个文件,并用于后续的部署。2.模型转换:由于ChatGPT是基于深度学习框架PyTorch实现的,因此需要将PyTorch模型转换为TensorFlowServing支持的格式。这一步可以使用TensorF......
  • chatgpt代写---王者荣耀赵怀真攻略
    王者荣耀是一款备受欢迎的手机游戏,其中赵怀真作为一个高机动性、控制能力和输出能力出色的英雄备受玩家喜爱。在游戏中,玩家可以通过四个主要的技能来使用赵怀真打造自己的强力操作。首先是"four",这是赵怀真最重要的技能之一。四次蓄力攻击可以协助赵怀真进行快速高伤害打击。对......
  • 白嫖GitHub Action实现开源项目CICD
    什么是CI/CD?让你的项目变得更加敏捷!在今天这个快速变化的时代,开发者们需要与时俱进,不断提升自己的工作效率。在这篇文章里,将一起探讨如何使用CI/CD和GithubAction让你的项目更加高效,快速响应市场变化。什么是CI?CI(持续集成,ContinuousIntegration)是一种软件开发实践,它要求开发......
  • ChatGPT:宝塔面板中nginx配置代理访问openai
    反向代理配置代码点击查看代码#PROXY-START/location/{proxy_passhttps://api.openai.com;proxy_set_headerHost$proxy_host;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;proxy_se......
  • 【LeetCode动态规划#13】买卖股票含冷冻期(状态众多,比较繁琐)、含手续费
    最佳买卖股票时机含冷冻期力扣题目链接(opensnewwindow)给定一个整数数组,其中第i个元素代表了第i天的股票价格。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前......
  • 国内开源的比较不错的消息队列mq
    METAQ是一款完全的队列模型消息中间件,服务器使用Java语言编写,可在多种软硬件平台上部署。客户端支持Java、C++编程语言。单台服务器可支持1万以上个消息队列,通过扩容服务器,队列数几乎可任意横向扩展。每个队列都是持久化、长度无限(取决于磁盘空间大小)、并且可从队列任意位置开始消......
  • Period UVA - 1371
     题意:给两个串A,B。现在把B串分为若干个部分,对每一个部分进行操作将其变为一个A串,代价为每部分操作次数的最大值求最小代价 #include<iostream>#include<algorithm>#include<cstring>usingnamespacestd;constintN=5003,M=N;#defineintlonglongconstinti......