云服务器内容精选

  • 步骤1:购买E CS 登录管理控制台,查看是否有弹性云服务器。 有Windows弹性云服务器,执行3。 无Windows弹性云服务器,执行2。 图1 ECS实例 购买弹性云服务器时,选择Windows操作系统。 由于需要在ECS下载SQL Server Management Studio客户端,因此需要为ECS绑定弹性公网IP(EIP),并且选择与RDS for SQL Server实例相同的区域、VPC和安全组,便于RDS for SQL Server和ECS网络互通。 购买Windows弹性云服务器请参考《弹性云服务器用户指南》中“购买弹性云服务器”章节。 在ECS实例基本信息页,查看ECS实例的区域和VPC。 图2 ECS基本信息 在RDS for SQL Server实例概览页,查看RDS实例的区域和VPC。 图3 SQL Server概览 确认ECS实例与RDS for SQL Server实例是否处于同一区域、同一VPC内。 是,执行步骤2:测试连通性并安装SQL Server Management Studio。 如果不在同一区域,请重新购买实例。不同区域的云服务之间内网互不相通,无法访问实例。请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。 如果不在同一VPC,可以修改ECS的VPC,请参见切换虚拟私有云。
  • 步骤2:测试连通性并安装SQL Server Management Studio 登录ECS实例,请参见《弹性云服务器用户指南》中“Windows弹性云服务器管理控制台远程登录(VNC方式)”。 在RDS“实例管理”页面,单击实例名称进入“概览”页面。 获取实例的内网地址和数据库端口。 图4 连接信息 在ECS上打开cmd命令窗,测试是否可以正常连接到RDS for SQL Server实例内网地址的端口。 telnet 192.168.2.182 1433 如果可以通信,说明网络正常。 如果无法通信,请检查安全组规则。 查看ECS的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将RDS实例的内网IP地址和端口添加到出方向规则。 图5 ECS的安全组 查看RDS的安全组的入方向规则,如果源地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将ECS实例的私有IP地址和端口添加到入方向规则,具体操作请参见设置安全组规则。 图6 RDS的安全组 在ECS上打开浏览器,访问Microsoft网站,以SQL Server Management Studio 18.0为例,下载安装包。 双击安装包,按照向导完成安装。
  • 操作步骤 创建c#函数,编译出一个RDS for SQL Server的dll。 图1 c#函数代码 创建函数详细说明请参见官方文档。 使用S SMS 等工具连接数据库。 图2 连接数据库 选择需要创建程序集的数据库,添加对应的程序集。 只能创建safe模式(权限集显示为安全),不能创建其他模式。 dll文件会以十六进制的形式存入。如图4所示。 图3 新建程序集 图4 dll文件 执行程序,如图5所示表示执行成功。程序集中新增一个TESTS程序集,如图6所示。 图5 执行结果 图6 TESTS程序集
  • 操作背景 公共语言运行库(CLR)是Microsoft .NET Framework 的核心,为所有.NET Framework代码提供执行环境。在CLR中运行的代码称为托管代码。CLR提供执行程序所需的各种函数和服务,包括实时(JIT)编译、分配和管理内存、强制类型安全性、异常处理、线程管理和安全性。 SQL CLR(SQL Common Language Runtime)是自SQL Server 2005才出现的新功能,它将.NET Framework中的CLR服务注入到SQL Server中,让SQL Server的部分数据库对象可以使用.NET Framework的编程语言开发(当前只支持VB.NET和C#),包括预存程序、用户自定义函数、触发程序、用户自定义类型以及用户自定义汇总函数等功能。但是要想执行CLR代码,首先要开启CLR特性。 更多介绍请参见Microsoft SQL Server官网公共语言运行时 (CLR) 集成编程概念。 CLR集成安全性相关内容请参见Microsoft SQL Server官网CLR 集成安全性。
  • 请求消息 表2 参数说明 名称 是否必选 参数类型 说明 name 是 String 数据库名称。 数据库名称长度可在1~64个字符之间,由字母、数字、中划线、下划线或英文句点组成,不能包含其他特殊字符,且不能以RDS for SQL Server系统库开头或结尾。 RDS for SQL Server系统库包括master,msdb,model,tempdb,resource以及rdsadmin。
  • 解释说明 仅“按需计费”模式下支持显示该参数。购买弹性公网IP是指将公网IP地址和路由网络中关联的Server服务器绑定,以实现虚拟私有云内的Server服务器通过固定的公网IP地址对外提供访问服务。 您可以根据实际情况选择以下三种方式: 现在购买:自动为每台Server服务器分配独享带宽的弹性公网IP,带宽值由您设定。 使用已有:为Server服务器分配已有的弹性公网IP。 暂不购买:不使用弹性公网IP的Server服务器不能与互联网互通,仅可作为私有网络中部署业务或者集群的Server服务器使用。 选择已有弹性公网IP后,不能批量创建Server。
  • 操作步骤 使用管理员账号登录服务器。 在服务器中,下载RemoteaProxyInstaller_xxx.zip(xxx为版本号)压缩包。 下载RemoteaProxy1.1.11.0版本(适配3.3.26-3.3.61.0的 堡垒机 版本) 服务器需要有公网访问权限(绑定弹性EIP)。 在应用服务器中,将RemoteaProxyInstaller_xxx.zip(xxx为版本号)压缩包进行解压。 双击“RemoteaProxyInstaller_xxx.msi”(xxx为版本号)启动安装。 安装时请选择默认的安装路径。 安装完成后,单击“关闭”。
  • 操作步骤 使用管理员账号登录服务器。 在服务器中,下载RemoteaProxyInstaller_xxx.zip(xxx为版本号)压缩包。 下载RemoteaProxy1.1.11.0版本(适配3.3.26-3.3.61.0的堡垒机版本) 服务器需要有公网访问权限(绑定弹性EIP)。 在应用服务器中,将RemoteaProxyInstaller_xxx.zip(xxx为版本号)压缩包进行解压。 双击“RemoteaProxyInstaller_xxx.msi”(xxx为版本号)启动安装。 安装时请选择默认的安装路径。 安装完成后,单击“关闭”。
  • 操作步骤 使用管理员账号登录服务器。 在服务器中,下载RemoteaProxyInstaller_xxx.zip(xxx为版本号)压缩包。 下载RemoteaProxy1.1.11.0版本(适配3.3.26-3.3.61.0的堡垒机版本) 服务器需要有公网访问权限(绑定弹性EIP)。 在应用服务器中,将RemoteaProxyInstaller_xxx.zip(xxx为版本号)压缩包进行解压。 双击“RemoteaProxyInstaller_xxx.msi”(xxx为版本号)启动安装。 安装时请选择默认的安装路径。 安装完成后,单击“关闭”。
  • AD域服务安装向导 安装AD域,单击“下一步”。 单击“下一步”。 选择“在新林中新建域”,单击“下一步”。 单击“下一步”。 设置林功能级别,在下拉菜单中选择“Windows Server 2008 R2”,单击“下一步”。 勾选“DNS服务器”,单击“下一步”。 界面显示“无法创建DNS委派”,单击“是”,然后继续。 选择数据库文件和日志文件的目录,采用默认配置即可,单击“下一步”。 设置目录还原模式的密码,还原模式的Administrator密码不等于系统密码,单击“下一步”。 界面显示信息概要,单击“下一步”。 勾选“完成后重新启动”。 重启后,使用域用户登录。 AD域环境安装完成。
  • 步骤四:执行训练 安装完成后,执行: accelerate launch -m --mixed_precision=bf16 eagle.train.main \ --tmpdir [path of data] \ --cpdir [path of checkpoints] \ --configpath [path of config file] \ --basepath [path of base_model] --bs [batch size] tmpdir:即为步骤三中的outdir,训练data地址 cpdir:为训练生成权重的地址 configpath:为模型config文件的地址 basepath:为大模型权重地址 bs:为batch大小 其中,要获取模型config文件, 首先到https://github.com/SafeAILab/EAGLE/页找到对应eagle模型地址。 图1 EAGLE Weights 以llama2-chat-7B为例,单击进入后 ,如下图所示config文件,即为对应模型的eagle config文件。 图2 eagle config文件
  • 步骤二:非sharegpt格式数据集转换(可选) 如果数据集json文件不是sharegpt格式,而是常见的 { "prefix": "AAA" "input": "BBB", "output": "CCC" } 格式,则需要执行convert_to_sharegpt.py 文件将数据集转换为share gpt格式。 python convert_to_sharegpt.py \ --input_file_path data_test.json \ --out_file_name ./data_for_sharegpt.json \ --prefix_name instruction \ --input_name input \ --output_name output \ --code_type utf-8 其中: input_file_path:预训练json文件地址。 out_file_name:输出的sharegpt格式文件地址。 prefix_name:预训练json文件的前缀 字段名称 (可设置为None,此时预训练数据集只有 input output 两段)输入前缀,(例如:您是一个xxx专家,您需要回答下面问题) input_name:预训练json文件的指令输入 字段名称(例如:请问苹果是什么颜色) output_name output:预训练json文件的output字段名称,例如:苹果是红色的。 code_type:预训练json文件编码 默认utf-8 当转换为share gpt格式时,prefix和 input会拼接成一段文字,作为human字段,提出问题,而output字段会作为gpt字段,做出回答。
  • 步骤五:训练生成权重转换成可以支持vLLM推理的格式 将训练完成后的权重文件(.bin文件或. safetensors文件),移动到下载好的开源权重目录下(即步骤4中,config文件所在目录)。 然后在llm_tools/spec_decode/EAGLE文件夹,执行 python convert_eagle_ckpt_to_vllm_compatible.py --base-path 大模型权重地址 --draft-path 小模型权重地址 --base-weight-name 大模型包含lm_head的权重文件名 --draft-weight-name 小模型权重文件名 --base-path:为大模型权重地址,例如 ./llama2-7b-chat --draft-path:小模型权重地址,即步骤四中config文件所在目录,例如 ./eagle_llama2-7b-chat --base-weight-name:为大模型包含lm_head的权重文件名,可以在base-path目录下的model.safetensors.index.json文件获取,例如llama2-7b-chat的权重名为pytorch_model-00001-of-00002.bin 图3 权重文件名 --draft-weight-name为小模型权重文件名,即刚才移动的.bin文件或者.safetensors 文件。
  • 步骤三:sharegpt格式数据生成为训练data数据集 若使用开源数据集,推荐使用原论文代码仓数据集,下载地址:https://huggingface.co/datasets/Aeala/ShareGPT_Vicuna_unfiltered/blob/main/ShareGPT_V4.3_unfiltered_cleaned_split.json 否则使用第二步生成的开源数据集。 python allocation.py \ --outdir outdir0/sharegpt_0_99_mufp16 \ --end_num 100 \ --used_npus "0,1,2,3,4,5,6,7" \ --model_type llama \ --model_name ./llama-7B \ --data_path data_for_sharegpt.json \ --seed 42 \ --max_length 2048 \ --dtype bfloat16 其中 outdir:生成的训练data 地址 end_num:生成的data总条数 used_npus:使用哪些NPU model_type:使用模型类型 目前支持 qwen2 llama1 llama2 及 llama3,其中llama1、2及chat都填写llama model_name:模型地址 data_path:预训练数据集地址 即一中生成的文件地址 seed:生成训练data所使用的seed(此处42为开源训练设定参数) max_length:模型的max_length dtype:为模型dtype 默认为bfloat16
  • 问题3:使用llama3.1系列模型进行推理时报错 使用llama3.1系模型进行推理时报错:ValueError: 'rope_scaling' must be a dictionary with two fields, 'type' and 'factor', got {'factor': 8.0, 'low_freq_factor': 1.0, 'high_freq_factor': 4.0, 'original_max_position_embeddings': 8192, 'rope_type': 'llama3'}