11 ms·
FauxPilot – an attempt to build a locally hosted version of GitHub Copilot
- ddevault 4y agoNext step is to train a model exclusively on leaks of proprietary Microsoft source code. Fair use, right Microsoft?
- notpushkin 4y agoIt probably wouldn't produce good code though :D
- jacooper 4y agoMan that would be so ironic. And if they want to sue for that, they will be shooting themseleves in the foot by proving their Fair-use argument isn't real.
- TeeMassive 4y agoIt will not end there. It began with Python when they removed "offensive" words such as "kill". Then it was GitHub then Git itself who removed the word "master". Now GitHub / Microsoft, who are producing tools that integrate themselves more and more into the programmers' workflow, will now more opportunities to enforce this kind of fringe ideology. Dystopian predictions; the following words will be replaced: Parent / Child Inheritance Class Binary Invalid
- WrtCdEvrydy 4y agoThis is awesome and I'm looking forward to seeing more from this.
- deleted 4y ago[deleted]
- grepfru_it 4y agoI would love to build a free and oss clone of GitHub using things like this. Kudos to moyix
- jraph 4y agoIt might be interesting to look into existing projects like Gitea or SourceHut. Gitea specifically seems to have a similar look and feel as GitHub.
- grepfru_it 4y agoOof. GitLab is really the only contender to GitHub. Both gitea and sr.ht don’t have search features. So we are really starting from square one here
- jraph 4y agoSquare one is great then. Let's move to square two "feature complete" by implementing search :-) Honestly, Gitea's feature set is quite impressive. sr.ht I'm less familiar. Of course GitLab is another option. I didn't mention it because it is well known, and probably less interesting / approachable to someone who would like to start from scratch, because it is more complex and there's this open core aspect.
- grepfru_it 4y agoHahaha okay! I actually replaced gitlab with gitea a few years ago. Mainly due to a conflict of interest but the sheer speed of gitea won me over. Look out for an email from me to coordinate search implementation :D
- simonw 4y agoIf you're working with code that fits on a single machine I recommend using ripgrep for brute force search - it's shockingly fast. I built my own web frontend for it a while back: https://simonwillison.net/2020/Nov/28/datasette-ripgrep/ https://simonwillison.net/2020/Nov/28/datasette-ripgrep/
- grepfru_it 4y agoThis is legit! I will peruse this during my free time tomorrow and see how to integrate into osshub
- miketery 4y agoThis is awesome! How is the quality vs. GitHub Copilot for Python or JavaScript?
- moyix 4y agoThe largest Python model (codegen-16B-mono) should be pretty competitive! The biggest thing that it lacks is the ability to make use of context after the cursor. Unfortunately, that capability will require retraining the models: https://arxiv.org/abs/2207.14255 https://arxiv.org/abs/2207.14255
- lee101 4y agoInteresting, lots of models are already trained on MLM (masked language modelling), so you can iteratively add mask tokens in the middle but you need some rules around termination such as probability/length of mask tokens... I'd be interested in how to convert models without retaining, or minimal retaining, I'd have thought it would just work with iterative mask tokens at least for models trained with MLM
- babyshake 4y agoMaybe this is a dumb question, what would be the most common use-case for this?
- oflordal 4y agoAny company that are not allowed to share code with third parties either by internal or customer policy. This should be a lot of companies.
- deleted 4y ago[deleted]
- feanaro 4y agoOr just not wanting to live in a surveillance-first, service-first world.
- feanaro 4y agoWell, do you prefer services over inspectable code you can run yourself? I don't. In fact, I strongly dislike having to rely on services.
- LesZedCB 4y agoman I finally got a 3080 and. ow you're telling me I need a second?! haha seriously though, I'm kinda sad the model size is 2GB then straight to 13GB.
- desindol 4y agoyou can get it running with resizable bar
- Namidairo 4y agoIn theory the 2B model should be somewhere in between, whenever it gets fixed.
- moyix 4y agoAssuming that it's just that hardcoded check I should be able to add it today. But if that check is load-bearing (i.e. if it relies on those assumptions elsewhere in the code) it could be a bit more painful. Edit: sadly, it's not that easy. Removing that check lets the 2B model load, but it produces gibberish. I've opened an issue with FasterTransformer here, and will also try to debug it further myself, but unfortunately it's not obvious how they're using that assumption. https://github.com/NVIDIA/FasterTransformer/issues/268 https://github.com/NVIDIA/FasterTransformer/issues/268
- moyix 4y agoGot it working :) You can now use the 2B models in FauxPilot as well.
- amelius 4y agoYou probably don't need physical GPUs but you can rent them in some cloud for a few days.
- deleted 4y ago[deleted]
- pabs3 4y agoI wonder what code corpus the SalesForce CodeGen model (which this uses) was trained on.
- jorams 4y agoFrom the paper[1]: > The family of CODEGEN models is trained sequentially on three datasets: THEPILE, BIGQUERY, and BIGPYTHON. > The natural language dataset THEPILE is an 825.18 GiB English text corpus collected by Gao et al. (2020) for language modeling. The dataset is constructed from 22 diverse high-quality subsets, one of which is programming language data collected from GitHub repositories with >100 stars that constitute 7.6% of the dataset. > The multi-lingual dataset BIGQUERY is a subset of Google’s publicly available BigQuery dataset, which consists of code in multiple programming languages such as C, Python, Ruby. For the multi-lingual training, the following 6 programming languages are chosen: C, C++, Go, Java, JavaScript, and Python. > The mono-lingual dataset BIGPYTHON contains a large amount of data in the programming language, Python. We have compiled public, non-personal information from GitHub consisting of permissively licensed Python code in October 2021. [1]: https://arxiv.org/abs/2203.13474 https://arxiv.org/abs/2203.13474
- low_tech_punk 4y agoBravo! I'm so glad this is born. I'm curious about its model, SalesForce CodeGen. Does it train on all the public repos on GitHub? Does Copilot have access to private repos that CodeGen cannot access? Also, it would be really cool if I can personalize FauxPilot by feeding it with all my repos on GitHub. Sometimes I just need to reimplement a function I've written before but it's really hard to find where my old code is.
- pabs3 4y agoA comment below mentions those details are in the paper: https://news.ycombinator.com/item?id=32328168 https://news.ycombinator.com/item?id=32328168
- thejosh 4y agoCopilot only accesses the private repositories for the user it is authenticated with. I'm fine with them accessing public repositories, as long as they respect the license. Which they probably aren't for private? On a related note, Google apparently treats their free customers in a way where all their data is mixed in for the algorithm, but apparently not the data from accounts who use Google Suite (paid business accounts), instead they have their own recommendations built for them on a per-user basis, then has the public algo mixed in.
- tpxl 4y ago> I'm fine with them accessing public repositories, as long as they respect the license. They don't respect the license.
- anthropodie 4y ago> I just need to reimplement a function I've written before There was a project here some time back that allowed to call function using its hash. This avoided replication. It was entirely different paradigm to resolve dependencies. Anyone remembers its name? It was controversial here but it was interesting nonetheless.
- 4y ago
- mgaunard 4y agoI don't understand the point of dedicating so many resources just so that you can have a Clipper add-on second-guess your code and make bad suggestions.
- speedgoose 4y agoYou have to start somewhere and the AI suggestions are already a big time saver.
- jpnc 4y agoCopilot is basically copying-from-stack-overflow on steroids. Maybe it should be called Copy-a-lot. Whatever. Regardless of copying mechanisms I expect my fellow developers to understand every suggestion made by such tools.
- grepfru_it 4y agoFriendly reminder, stackoverflow is licensed with the Creative Commons sharealike license[0]. If you copy and paste from SO you are required to attribute the original author in your code. I don’t think anybody does this. Let’s also ignore the fact that people share licensed code (GPL as example) as SO answers. [0] https://stackoverflow.com/help/licensing https://stackoverflow.com/help/licensing
- deleted 4y ago[deleted]
- Kiro 4y agoCopilot has given me great utility and increased my productivity a lot. I constantly get surprised and amazed by the suggestions. A self-hosted version would be awesome.
- shaburn 4y agoespecially with model tailoring and utilization of proprietary code bases. Really, models may want to overweight for those, at the users' discretion.
- maxloh 4y agoWhat's the license of the project? There is no license file in the repo
- gangohango 4y ago
- moyix 4y agoFixed! Didn't expect this to hit HN so fast :)
- BrandonJung 4y agolove the speed you are moving!
- stagas 4y agoTangential, maybe someone here knows; how complicated would be to implement an autocompleter that just understands syntax + patterns and can offer me suggestions but based on my own stuff? Like what is the simplest version of Copilot that doesn't require huge amounts of training but just does a decent job at recognizing tokens and trying to fill in the structure based on some input code. e.g: `app.get('/',|` <- at this point I should get an express.js handler autocomplete like `(req, res, next) => {}`, maybe with multiple choices grepped from my own data ranked by occurences. Is this too extreme it needs a multibillion parameter AI model to achieve? Does anything like this exist? Like an auto-snippet thing but contextual and token replacing.
- danpalmer 4y agoTo do this in a way that’s actually useful is hard. Microsoft has had Intellisense, JetBrains have autocomplete in Intellij and other products. Both have big teams and decades of work put into them, and still and great, hence the ML approach being tried now.
- amelius 4y agoIs it really that difficult? If I type app.get('/', then looking for literal occurrences and presenting me a menu of all the literal completions I have used before (no ML required at all) would already be a huge win.
- danpalmer 4y agoWhat if it's not called `app` – in larger codebases there's often a layer of indirection with different naming. What if it's not indented the same amount, is it the same? What if it's not a GET, but a POST? Both use the req/res handlers so you'd want the prediction for both. What if it's not for the path /, but for some other path. As you can only have one handler for the root, most handlers will be for different paths. Maybe you can write these edge cases in for the Express situation and get req/res prediction, but that's a bunch of work to automate ~10 characters and it only works for this specific use-case. It doesn't work for any other languages, frameworks, libraries, or use-cases. There are 2 ways to do this well: 1) static analysis of code to understand what is allowed to come next, and predicting based on that (Intellij, Intellisense, etc) or 2) ML or statistical analysis to determine what's likely to come next without knowing much about the rules (Copilot, Tabnine, Intellicode). Both of these approaches are hard to do right, but have a high pay off.
- lee101 4y agoAwesome work, I made a similar project which is making a cost effective and privacy focused alternative to OpenAI text generation that can be switched to in a one line/easy way because it's API compatible https://text-generator.io/blog/over-10x-openai-cost-savings-one-line-change https://text-generator.io/blog/over-10x-openai-cost-savings-... also works for generating code too so would be excited for someone to try that out too.
- sent-hil 4y agoDoes it work with natural language to sql?
- lee101 4y agoYep, when doing auto complete it helps to include your real table schema in (create table statements ) there's an example in the playground of python code autocomplete which can be changed to SQL or natural language indicating some SQL is expected. Also can try a comment with the file name e.g. ### migrations/user_add_free_credit.sql adds free credits field to user table
- pixelpoet 4y agoSuch a clever name :)
- amelius 4y agoWith model sizes starting at 2GB, wouldn't the model be hopelessly overdetermined for small codebases?
- jrm4 4y agoThis is excellent. Please do suck the wind from Microsoft's exploitative sails here. Copilot primarily exists as a way for Microsoft to end-run around the GPL.
- ianbutler 4y agoThis is awesome! Will be trying it out. Hope you're doing well :D