金融工程研究:如何部署本地版“ChatGPT”提高研究效率_第1页
金融工程研究:如何部署本地版“ChatGPT”提高研究效率_第2页
金融工程研究:如何部署本地版“ChatGPT”提高研究效率_第3页
金融工程研究:如何部署本地版“ChatGPT”提高研究效率_第4页
金融工程研究:如何部署本地版“ChatGPT”提高研究效率_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本报告由中信建投证券股份有限公司在中华人民共和国(仅为本报告目的,不包括香港、澳门、台湾)提供。在遵守适用的法律法规情况下,本报告亦可能由中信建投(国际)证券有限公司在香港提供。同时请参阅最后一页的重要声明。2022/4/142022/5/142022/6/142022/7/142022/8/142022/9/142022/10/142022/11/142022/12/142023/1/142022/4/142022/5/142022/6/142022/7/142022/8/142022/9/142022/10/142022/11/142022/12/142023/1/142023/2/142023/3/14证券研究报告·金融工程动态如何部署本地版“ChatGPT”提高研究核心观点正基于网页交互模式的ChatGPT对于人类的生活以及工作方式带来的极大的便利,然而这只是ChatGPT的冰山一角。API以及插件系统的开放,使得ChatGPT能够结合各种程序以及软件,让ChatGPT的应用空间充满无尽的可能性,这是真正意义上AI的iphone时刻。对于金融工程研究而言,除了日常的网页版交互完成一定的指令之外,通过API接口能够使研究工作效率极大提高。同时,随着各类技术的应用,本地化部署开源大语言模型框架也得以实现。本文将介绍如何使用OPENAI的API接口以及如何本地部署开源大预言模型Vicuna,能够在程序中调用各类模型,提高研究工作效率主要结论简介基于网页交互模式的ChatGPT对于人类的生活以及工作方式带来的极大的便利,然而这只是ChatGPT的冰山一角。API以及插件系统的开放,使得ChatGPT能够结合各种程序以及软件,让ChatGPT的应用空间充满无尽的可能性,这是真正意义上AI的iphone时刻。对于金融工程研究而言,除了日常的网页版交互完成一定的指令API究工作效率极大提高。同时,随着各类技术的应用,本地化部署开源大语言模型框架也得以实现。OPENAI官方开放了API接口,可以使用HTTP请求,也可以使用OPENAI提供的python库,Node.js库以及一些社区维护的库。我们以python库为例,介绍如何使用OPENAI的API接口。本地部署VICUNA本文以Vicuna模型为例,介绍如何在个人电脑上部署模型。Vicuna模型是基于LLaMA的微调模型,是由加州大学伯克利分校、CMU、斯坦福大学和加州大学圣地亚哥分校的成员共同提出的。他们从shareGPT收集了大约7万个对话,借鉴Alpaca的微调方式,将LLaMA模型进行微调。最终实现了chatGPT大约90%的质量,但是训练成本仅300美元左右ingcsccomcn821623SAC编号:s1440515020001angchaodcqcsccomcnSAC编号:S1440522120002市场表现9%4%-1%-6%-11% 上证指数相关研究报告国债指数金融工程研究金融工程研究报告页的重要声明 三、本地部署Vicuna 10 金融工程研究金融工程研究报告页的重要声明1一、简介架构的大型语言模型並以强化学习训练。ChatGPT目前仍以文字方式互动,而除了可以用人类自然对话方式来互动,还可以用于甚为复杂的语言工作,包括自动生成文本、自动问答、自动摘要等多种任务。如:在自动文本生成方面,ChatGPT可以根据输入的文本自动生成类似的文本(剧本、歌曲、企划等),在自动问答方面,ChatGPT可以根据输入的问题自动生成答案。还有编写和调试计算机程序的能力。ChatGPT的出现对自然语言处理技术的推进,进一步促进了人工智能和自然语言处理等领域的快速发展,有着重要的意义。ChatGPT将改变我们的工作方式和人类的生活,并且将带来更多的机会和挑战。(以上文字均由ChatGPT生成)基于网页交互模式的ChatGPT对于人类的生活以及工作方式带来的极大的便利,然而这只是ChatGPT的冰山一角。API以及插件系统的开放,使得ChatGPT能够结合各种程序以及软件,让ChatGPT的应用空间充满无尽的可能性,这是真正意义上AI的IPHONE时刻。对于金融工程研究而言,除了日常的网页版交互完成一定的指令之外,通过API接口能够使研究工作效率极大提高。同时,随着各类技术的应用,本地化部署开源大语言模型框架也得以实现。本文将介绍如何使用OPENAI的API接口以及如何本地部署开源大预言模型Vicuna,能够在程序中调用各类模型,提高研究工作效率API接口OPENAI官方开放了API接口,可以使用HTTP请求,也可以使用OPENAI提供的python库,Node.js库以及一些社区维护的库。我们以python库为例,介绍如何使用OPENAI的API接口。2.1准备工作为了使用OPENAI的接口,需要在官网注册账号,注册成功后,每个账号会提供5美元(3月3日之前注册的账号为18美元)的额度用于体验资格。注册成功后,在API页面创建新的安全密钥,会生成sk-**********的字符串,保存密钥用于后续操作。金融工程研究金融工程研究报告页的重要声明2数据来源:OPENAI官网,中信建投证券2.2请求首先安装官方的python库:pipinstallopenai安装完成后便可调用接口,以查询模型为例,通过一下代码即可实现利用pythonAPI接口从官方查询模型importimportosimportopenaiopenai.api_key="<YOUR-API-KEY-HERE>"models=openai.Model.list()forimodelinmodels['data']:print(imodel['root'])Davinci以及最新的GPT-3.5-turbo等模型机器相关模型共计60个。其中Ada,Babbage,Curie以及Davinci均GPT型,模型参数量分别为350M,1.3B,6.7B以及175B。GPT-3.5-turbo是目前官方推荐的GPT-3.5模型,能够以较低的成本(对话成本为text-davinci-003的1/10)实现优异的表现。目前GPT-4的模型还未公开开放,可以通过加入waitinglist等待或者付费使用。金融工程研究金融工程研究报告页的重要声明32.3任务类型OPENAIAPI接口的任务类型包括补全(completions),对话(chat),编辑(edit),图片(images),嵌入向量(embedding),音频(audio),文件(files),微调(fine-tunes)以及适度性(moderations)。以对话为例,使用API调用对话的接口方式为:completioncompletion=openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role":"user","content":"Hello!"}])print(completion.choices[0].message)输出结果为:{{"content":"Hellothere!HowmayIassistyoutoday?","role":"assistant"}以以图片任务为例,OPENAI使用第二代DALL·E模型生成图片,生成的案例如下:response=openai.Image.create(prompt="awhitesiamesecat",n=1,size="1024x1024")image_url=response['data'][0]['url']生成的图片结果:金融工程研究金融工程研究报告页的重要声明4数据来源:OPENAI,中信建投证券API同样提供语音模型whisper的接口,能够用于语音转文字,语音翻译等任务。以下代码为语音转文字的audioaudio_file=open("chatgpt.mp3","rb")transcript=openai.Audio.transcribe("whisper-1",audio_file)print(transcript['text'])代代码输出结果:ChatGPT是OpenAI开发的一款人工智能聊天机器人它可以以类似人类的方式进行对话交流它基于GPT四语言模型拥有1750亿个参数能够在一秒钟内处理数十亿个单词ChatGPT的出现对于世界的影响有以下几个方面ChatGPT可以提高人们的生产力和创造力帮助他们完成各种文本生成编辑翻译摘要等任务它也可以作为一个智能助理为用户提供信息建议娱乐等服务ChatGPT可以促进人工智能的发展和普及让更多的人接触和使用先进的语言模型技术它也可以为其他领域的研究和应用提供灵感和支持例如教育医疗法律商业等ChatGPT也可能带来一些挑战和风险例如如何保证它的安全性、可靠性、道德性和责任性它也可能对人类的语言、思维、沟通和社会等方面产生一些影响和改变金融工程研究金融工程研究报告页的重要声明5其他任务类型包括文本补全,模型微调,词嵌入以及适度性检查,均有API接口实现,具体实现可查询官2.4辅助工作对于金融工程研究而言,利用OPENAI提供的模型的强大的代码分析及生成能力,可以极大的提高日常研究的效率。2.4.1代码分析可以将代码文件内容输入文本的API接口,利用分析的prompt来分析代码内容。给定一个logfile.py文件,包含了一个Logclass:importimportosimportuuidimportjsonclassLog:def__init__(self,path):dirname=os.path.dirname(path)os.makedirs(dirname,exist_ok=True)f=open(path,"a+")#Checkthatthefileisnewline-terminatedsize=os.path.getsize(path)ifsize>0:f.seek(size-1)end=f.read(1)ifend!="\n":f.write("\n")self.f=fself.path=pathdeflog(self,event):event["_event_id"]=str(uuid.uuid4())json.dump(event,self.f)self.f.write("\n")defstate(self):state={"complete":set(),"last":None}forlineinopen(self.path):event=json.loads(line)页的重要声明6ififevent["type"]=="submit"andevent["success"]:state["complete"].add(event["id"])state["last"]=eventreturnstate为了分析以上代码内容,可以利用以下代码实现代码分析功能:filefile='logfile.py'f=open(file,'r')contexts=''.join(f.readlines())prompt='\n解释以上代码内容\n'response=openai.Completion.create(model="text-davinci-003",prompt=contexts+prompt,temperature=0,max_tokens=1000,top_p=1.0,frequency_penalty=0.0,presence_penalty=0.0,stop=["\"\"\""])print(response['choices'][0]['text'])输出结果为:这段代码实现了一个这段代码实现了一个Log类,它可以用来记录事件,并获取事件的状态。__init__方法用于初始化Log类,它接收一个路径参数,用于指定日志文件的位置。它会检查路径是否存在,如果log方法用于记录事件,它接收一个事件参数,并为事件生成一个唯一的ID,然后将事件写入日志文件。state方法用于获取事件的状态,它会读取日志文件,并返回一个字典,其中包含已完成的事件ID和最后一个成功完成的事件。2.4.2代码生成利用合适的prompt可以通过API来实现代码生成。以上述文件为例,要求ChatGPT在其中加入一个输出filefile='logfile.py'f=open(file,'r')contexts=''.join(f.readlines())prompt='\n在以上class中加入一个输出的函数,输出Log文件的信息,请输出完整的Logclass\n'页的重要声明7responseresponse=openai.Completion.create(model="text-davinci-003",prompt=contexts+prompt,temperature=0,max_tokens=1000,top_p=1.0,frequency_penalty=0.0,presence_penalty=0.0,stop=["\"\"\""])print(response['choices'][0]['text'])输输出结果为:classLog:def__init__(self,path):dirname=os.path.dirname(path)os.makedirs(dirname,exist_ok=True)f=open(path,"a+")#Checkthatthefileisnewline-terminatedsize=os.path.getsize(path)ifsize>0:f.seek(size-1)end=f.read(1)ifend!="\n":f.write("\n")self.f=fself.path=pathdeflog(self,event):event["_event_id"]=str(uuid.uuid4())json.dump(event,self.f)self.f.write("\n")defstate(self):state={"complete":set(),"last":None}forlineinopen(self.path):event=json.loads(line)ifevent["type"]=="submit"andevent["success"]:state["complete"].add(event["id"])state["last"]=eventreturnstatedefoutput(self):withopen(self.path,'r')asf:页的重要声明8forforlineinf:print(line)2.4.3代码说明文档同样API可以用于代码的文档生成:filefile='logfile.py'f=open(file,'r')contexts=''.join(f.readlines())prompt='\nwriteanelaborate,highqualitydocstringfortheabovefunction:\n"\"\"'response=openai.Completion.create(model="text-davinci-003",prompt=contexts+prompt,temperature=0,max_tokens=300,top_p=1.0,frequency_penalty=0.0,presence_penalty=0.0,stop=["\"\"\""])print(response['choices'][0]['text'])输出结果输出结果:Thisclassprovidesaloggingutilityfortrackingevents.Itisinitializedwithapathtoalogfile,whichiscreatedifitdoesnotexist.Thelog()methodisusedtowriteaneventtothelogfile,andthestate()methodisusedtoretrievethecurrentstateofthelogfile.Parameters----------path:strThepathtothelogfile.Attributes----------f:fileThefileobjectforthelogfile.path:strThepathtothelogfile.Methods-------log(event)Loganeventtothelogfile.页的重要声明9statestate()Retrievethecurrentstateofthelogfile.2.4.4代码debug代码bug是日常代码编写中最为头疼的问题,利用ChatGPT可以非常高效的进行代码debug。以logfile为例,在代码中加入bug,将第五行的==改为=,代码运行时将会报错利用ChatGPT进行debug:filefile='logfile.py'f=open(file,'r')contexts=''.join(f.readlines())prompt='\nFixabovefunction:\n"\"\"'response=openai.Completion.create(model="text-davinci-003",prompt=contexts+prompt,temperature=0,max_tokens=300,top_p=1.0,frequency_penalty=0.0,presence_penalty=0.0,stop=["\"\"\""])print(response['choices'][0]['text'])输出结果输出结果:defstate(self):state={"complete":set(),"last":None}forlineinopen(self.path):event=json.loads(line)ifevent["type"]=="submit"andevent["success"]:state["complete"].add(event["id"])state["last"]=eventreturnstate可以看出ChatGPT正确的修复了代码bug。2.4.5录音生成会议纪要页的重要声明行业研究员需要花费大量的时间精力撰写会议纪要,人工生成会议纪要通常分为语音转文字,以及从文字提取关键信息这两步骤,通过OPENAI的API接口,能够高效的实现会议纪要生成,以下为利用录音生成纪要audioaudio_file=open("chatgpt.mp3","rb")transcript=openai.Audio.transcribe("whisper-1",audio_file)completion=openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role":"user","content":transcript['text']+"\n请精简以上内容"}])print(completion.choices[0].message['content'])输出结果为:ChatGPT是OpenAI开发的一款人工智能聊天机器人,能够以类似人类的方式进行对话交流。它基于GPT四语言模型,拥有1750亿个参数,可以提高人们的生产力和创造力,促进人工智能的发展和普及,并为其他领域的研究和应用提供灵感和支持。然而,ChatGPT也可能带来一些挑战和风险,需要考虑安全性、可靠性、道德性和责任性,并可能对人类的语言、思维、沟通和社会等方面产生一些影响和改变。音频文件原文共307个文字,提取摘要后的文字字数为169。在未改变原文含义的情况下,成功的进行了信息的压缩。cunaOPENAI虽然提供了强大的API支持,能够极大的拓展ChatGPT以及其他模型的应用领域,但是大部分模型均未开源,而且在使用时存在诸多限制。除了OPENAI的ChatGPT之外,各大互联网企业也纷纷推出了自己的大预言模型,例如百度的文心一言,阿里的通义千问,商汤的商量等,与OPENAI的战略一致,这些模型也均未开源。除此之外,meta开源了LLaMA模型,清华开源了GLM模型,使得一般企业和个人能够部署和训练自己的“ChatGPT”。但是大语言模型对于硬件要求极高,限制了个人用户部署自己的“ChatGPT”,随着一系列优化技术的提出,例如ZeRO、Gemini、LoRA、AutoChunk等,使得训练和部署模型的成本极大下降。各个优化模型也纷纷提出,包括Colossal-AI,Alpaca,Vicuna等,能够以较低的成本训练或者部署对话模型。使得在个人电脑上部署成为可能。本文以Vicuna模型为例,介绍如何在个人电脑上部署模型。Vicuna模型是基于LLaMA的微调模型,是由加州大学伯克利分校、CMU、斯坦福大学和加州大学圣地亚哥分校的成员共同提出的。他们从ShareGPT收集金融工程研究金融工程研究报告页的重要声明了大约7万个对话,借鉴Alpaca的微调方式,将LLaMA模型进行微调。最终实现了ChatGPT大约90%的质量,但是训练成本仅300美元左右。需要注意的是,Vicuna同LLaMA一样,模型均不能用于商业用途。本文也仅为Vicuna的模型介绍,不提供任商业支持。3.1准备工作系统要求:Linux或者WindowWSL硬件要求:CPU模式(7B:30GB内存,13B:60G内存)GPU模式(7B:14G显存,13B:28G显存,可使用8bit量化模型压缩显存)首先安装fastchat以及huggingface的transoformer:#InstallFastChatpip3installfschat#Installthelatestmainbranchofhuggingface/transformerspip3installgit+/huggingface/transformers克隆fastchat的项目地址:gitclone/lm-sys/FastChat.git其次下载LLaMA权重文件以及Vicunadelta权重文件。原始的LLaMA权重文件需要提交申请,申请通过之后即可下载,申请地址为申请链接。有许多社区开源版本,可自行搜索下载。下载完成后,需要将权重文件转换为huggingface格式的权重文件。也可从huggingface的decapoda-research/llama-13b-hf项目直接下载转换后的权重文件。Vicunadelta权重文件可从huggingface的lmsys/vicuna-13b-delta-v1.1项目下载。将两个权重文件融合,融合命令为:python3-mfastchat.model.apply_delta\--base/path/to/llama-13b\--target/output/path/to/vicuna-13b\--deltalmsys/vicuna-13b-delta-v1.1融合完成后会得到以下文件:金融工程研究金融工程研究报告页的重要声明4.0K4.0K9.3G9.3G36K4.0K492K4.0Kconfig.jsongeneration_config.jsonpytorch_model-00001-of-00003.binpytorch_model-00002-of-00003.binpytorch_model-00003-of-00003.binpytorch_model.bin.index.jsonspecial_tokens_map.jsontokenizer.modeltokenizer_config.json3.2模型运行在本地运行以下命令加载模型:单GPU模式:python3-mfastchat.serve.cli--model-path/path/to/vicuna/weights单CPU模式:python3-mfastchat.serve.cli--model-path/path/to/vicuna/weights--devicecpu多GPU模式:python3-mfastchat.serve.cli--model-path/path/to/vicuna/weights--num-gpus28bit模式:python3-mfastchat.serve.cli--model-path/path/to/vicuna/weights--load-8bit可根据自己硬件条件运行相应的命令。推荐使用8bit的GPU模型。加载完成后便可进入问答系统,我们分别使用ChatGPT以及Vicuna进行对比,测试两者的区别问题一:金融工程未来的发展方向TVicuna工程学和数学应用于金融领域,以帮助金融机构和管理风险和提高收益。随着金融市场的不断变化和创据:人工智能和大数据技术的发展使得金融机构可分析市场和风险,优化交易策略和资产配置。通过机器学提高投资回报和降低风险。模投资组合的交易方式。随着技术的不断发展,量化可以更好地识别市场机会和风险点,从而实现更好风险管理。的发展方向可能包括:种去中心化、不可篡改的数据储存安全性、更多的应用场景等。在金融领域,区块链技术面。.人工智能技术:人工智能技术可以用于金融领域的风险管理、客营销等方面。未来的人工智能技术可能会不断发展用场景等。量子计算技术:量子计算技术可以用于金融领域的数据分析和预金融工程研究金融工程研究报告页的重要声明工程提供了新的机遇。区块链技术还可以用于智能合约的开发,帮助金融机构更好合约风险。供遇。例如,随着互联网金融的发展,金融机构需要技术和数据分析来发现新的市场机会和风险点。和金融市场的不断变化和创新,金融工程的未来发广阔。、更高效的金融服务。未来的区块链金融可融工程未来发展方向的一些潜在机会资料来源:ChatGPT,Vicuna,中信建投证券两者均从四个方面阐述了金融工程未来的发展方向,表现不分伯仲。:用Pyhon实现冒泡排序TVicunaefbubblesortarrefbubblesortarrn=len(arr)n=len(arr)oriinrangenoriinrangenifarrjarrj+1]:jinrangenpelementsarrjarrj=arr[j+1],arr[j]ifarrjarri]:returnarrarrjarri=arr[i],arr[j]returnarr资料来源:ChatGPT,Vicuna,中信建投证券两者均实现了完整的冒泡算法,ChatGPT算法效率更高,Vicuna注释更加完整。importimportRandoma=random.randint(1,12)b=random.randint(1,12)foriinrange(10):question="Whatis"+a+"x"+b+"?"金融工程研究金融工程研究报告页的重要声明answeranswer=input(question)ifanswer=a*bprint(Welldone!)else:print("No.")TVicunaHeresthefixedPythoncode:pythoncodeportrandomarandomrandint,12)b=random.randint(1,12)foriinrange):question="Whatis"+str(a)+"x"+str(b)+"?"swerinputquestionifintanswera*b:printWelldone")print("No.")HerearethechangesImadetofixthebugs:Theimportstatementwasincorrect.randomshouldbelowercase,soIchangedRandomtorandom.Inthelineifanswerabthe=shouldbechangedto==toperformacomparisoninsteadofanassignment.Thevariablesaandbareintegersbutwhenbuildingthequestionstring,theyneedtobeconvertedtostringsusingstr(a)andstr(b)beforeconcatenation.Intheifstatementweneedtoconverttheuser'sinputtoanintegerusingint(answer)beforecomparingittoa*b.Withthesechanges,thecodeshouldruncorrectly.Hereisthefixedversionofthefunction:PythonCode=========portRandomarandomrandint,12)b=random.randint(1,12)foriinrange):questionWhatis"+str(a)+"x"+str(b)+"?"answerinputquestionifanswer=str(a*b):printWelldone")printNo.")xplanationThemainissueswiththeoriginalcodewere:Theifstatementwasmissingan`==`operator.2.The`input`functionwasnotconvertingtheuser'sanswertoastring.Theprintstatementwasnotusingthecorrectsyntaxforprintingmessagestotheuser.Thefixedversionofthecodeaddressestheseissues.The`if`statementnowusesan`==`operatortocomparetheanswertotheresultof`a*b`.Theinputfunctionisnowusedtogettheuser'sanswerasastring,andthe`print`statementusesthecorrectsyntaxforprintingmessagestotheuser.金融工程研究金融工程研究报告页的重要声明资料来源:ChatGPT,Vicuna,中信建投证券原代码中共有四个bug,ChatGPT均成功修复,而Vicuna只修复了其中的三个,并未修复importRandom这个bug,并且,代码最后几行的缩进没有正确处理,引入了新的bug。问题四:有一群鸭和兔子,共有10个脑袋,32条腿,请问鸭和免各有几只?gptVicunaxy10$(总数量为10)这群鸭和兔子共有$x$只鸭和$y$只兔子,则由于它们共有beginalignedx+y&=10\(&\text{鸭和兔子共有10个脑袋})\x4y=32$(总腿数为32,鸭子有2条腿,兔子有4条腿)第一个方程式变形得到$y=10-x$,然后将它代入第二个方程式x+2y&=32\(&\text{鸭和兔子共有32条腿})\\end{aligned}$$x10-x)=32$xyxy\iff3x+2y=2x+2y\iffx=y$$表示$x$和$y$的值相等。因此,鸭和兔子共有和4只兔子。资料来源:ChatGPT,Vicuna,中信建投证券两者均未给出正确答案,其中ChatGPT搞反了顺序,相较而言,Vicuna的错误更加离谱,只给出了x=y这个错误结论。通过以上对比可以看出,对于普通的对话,Vicuna的表现接近ChatGPT水平,而在推理方面,Vicuna与ChatGPT存在一定的差距,这也是由模型本身的大小所导致的。3.3模型微调Vicuna本身是基于LLaMA的微调后的模型,对于各类下游任务,可以使用相应的数据对Vicuna进行微调,微调对硬件要求较高,微调命令为:torchrun--nproc_per_node=4--master_port=20001fastchat/train/train_mem.py\--model_name_or_path~/model_weights/llama-7b\--data_pathplayground/data/dummy.json\--bf16True\--output_diroutput\金融工程研究金融工程研究报告页的重要声明--num_train_epochs3\--per_device_train_batch_size2\--per_device_eval_batch_size2\--gradient_accumulation_steps16\--evaluation_strategy"no"\--save_strategy"steps"\--save_steps1200\--save_total_limit10\--learning_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论