Package: code-autocomplete
Code AutoCompletecode-autocomplete, a code completion plugin for Python.code-autocompletecan automatically complete the code of lines and blocks with GPT2.GuideFeatureInstallUsageContactCitationReferenceFeatureGPT2-based code completionCode completion for Python, other language is coming soonLine and block code completionTrain(Fine-tune GPT2) and predict model with your own dataDemoHuggingFace Demo:https://huggingface.co/spaces/shibing624/code-autocompleteInstallpip3 install torch # conda install pytorch
pip3 install -U code-autocompleteorgit clone https://github.com/shibing624/code-autocomplete.git
cd code-autocomplete
python3 setup.py installUsageCode CompletionModel upload to HF's model hub:DistilGPT2-python:shibing624/code-autocomplete-distilgpt2-python(fine-tuned distilgpt2, model size: 319MB)GPT2-python:shibing624/code-autocomplete-gpt2-base(fine-tuned gpt2, model size: 487MB)Use with code-autocompleteexample:base_demo.pyfromautocomplete.gpt2_coderimportGPT2Coderm=GPT2Coder("shibing624/code-autocomplete-gpt2-base")print(m.generate('import torch.nn as')[0])distilgpt2 fine-tuned code autocomplete model, you can use the following code:example:distilgpt2_demo.pyimportsyssys.path.append('..')fromautocomplete.gpt2_coderimportGPT2Coderm=GPT2Coder("shibing624/code-autocomplete-distilgpt2-python")print(m.generate('import torch.nn as')[0])output:importtorch.nnasnn
importtorch.nn.functionalasFUse with huggingface/transformers：example:use_transformers_gpt2.pyPlease use 'GPT2' related functions to load this model!importosfromtransformersimportGPT2Tokenizer,GPT2LMHeadModelos.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"tokenizer=GPT2Tokenizer.from_pretrained("shibing624/code-autocomplete-gpt2-base")model=GPT2LMHeadModel.from_pretrained("shibing624/code-autocomplete-gpt2-base")prompts=["import numpy as np","import torch.nn as",'parser.add_argument("--num_train_epochs",',"def set_seed(","def factorial",]forpromptinprompts:input_ids=tokenizer(prompt,return_tensors='pt').input_idsoutputs=model.generate(input_ids=input_ids,max_length=64+len(input_ids[0]),temperature=1.0,top_k=50,top_p=0.95,repetition_penalty=1.0,do_sample=True,num_return_sequences=1,length_penalty=2.0,early_stopping=True,pad_token_id=tokenizer.eos_token_id,eos_token_id=tokenizer.eos_token_id,)decoded=tokenizer.decode(outputs[0],skip_special_tokens=True)print("Input :",prompt)print("Output:",decoded)print("="*20)output:importnumpyasnp====================importtorch.nnasnn
importtorchvision.transformsastransforms====================parser.add_argument("--num_train_epochs",type=int,default=50,help="Number of training epochs.")parser.add_argument("--batch_size",type=int,default=32,help="Batch size of validation/test data.")====================defset_seed(self):====================deffactorial(n:int)->int:Train your own model with DatasetBuild datasetThis allows to customize dataset building. Below is an example of the building process.Let's use Python codes fromAwesome-pytorch-listWe want the model to help auto-complete codes at a general level. The codes of The Algorithms suits the need.This code from this project is well written (high-quality codes).dataset tree:examples/download/python
├──train.txt
└──valid.txt
└──test.txtThere are three ways to build dataset:Use the huggingface/datasets library load the dataset
huggingface datasetshttps://huggingface.co/datasets/shibing624/source_codepip3installdatasetsfromdatasetsimportload_datasetdataset=load_dataset("shibing624/source_code","python")# python or java or cppprint(dataset)print(dataset['test'][0:10])output:DatasetDict({train:Dataset({features:['text'],num_rows:5215412})validation:Dataset({features:['text'],num_rows:10000})test:Dataset({features:['text'],num_rows:10000})}){'text':["            {'max_epochs': [1, 2]},\n",'            refit=False,\n','            cv=3,\n',"            scoring='roc_auc',\n",'        )\n','        search.fit(*data)\n','','    def test_module_output_not_1d(self, net_cls, data):\n','        from skorch.toy import make_classifier\n','        module = make_classifier(\n']}Download dataset from CloudNameSourceDownloadSizePython+Java+CPP source codeAwesome-pytorch-list(5.22 Million lines)github_source_code.zip105Mdownload dataset and unzip it, put toexamples/.Get source code from scratch and build datasetprepare_data.pycdexamples
pythonprepare_data.py--num_repos260Train and predict modelexample:train_gpt2.pycdexamples
pythontrain_gpt2.py--do_train--do_predict--num_epochs15--model_diroutputs-fine-tuned--model_namegpt2Serverstart FastAPI server:example:server.pycdexamples
pythonserver.pyopen url:http://0.0.0.0:8001/docsContactIssue(建议)
：邮件我：xuming:xuming624@qq.com微信我： 加我微信号：xuming624, 备注：个人名称-公司-NLP进NLP交流群。Citation如果你在研究中使用了code-autocomplete，请按如下格式引用：APA:Xu, M. code-autocomplete: Code AutoComplete with GPT2 model (Version 0.0.4) [Computer software]. https://github.com/shibing624/code-autocompleteBibTeX:@software{Xu_code-autocomplete_Code_AutoComplete,
author ={Xu, Ming},
title ={code-autocomplete: Code AutoComplete with GPT2 model},
url ={https://github.com/shibing624/code-autocomplete},
version ={0.0.4}}License授权协议为The Apache License 2.0，可免费用做商业用途。请在产品说明中附加code-autocomplete的链接和授权协议。Contribute项目代码还很粗糙，如果大家对代码有所改进，欢迎提交回本项目，在提交之前，注意以下两点：在tests添加相应的单元测试使用python setup.py test来运行所有单元测试，确保所有单测都是通过的之后即可提交PR。Referencegpt-2-simplegalois-autocompleter