The VSCode GitLab extension now supports getting code completions from FauxPilot
twitter.com
twitter.com
This work was produced by our AI Assist SEG (Single-Engineer Group)[0]. The engineer behind this feature recently uploaded a quick update about this work and other things they are working on to YouTube[1].
[0] - https://about.gitlab.com/handbook/engineering/incubation/ai-...
[1]: https://about.gitlab.com/company/team/structure/#single-engi...
At GitLab, we have a clearly defined organizational structure. Within that stucture, we have Product Groups[0] which are groups of people aligned around a specific category. The name "Single-Engineer Groups" reflects that this single engineer owns the category which they're focusing on.
I'll be sure to surface your question to the leader of our Incubation Engineering org. Thanks.
[0] - https://about.gitlab.com/company/team/structure/#product-gro...
Other recent outputs of the team are CloudSeed[0], improved GitLab pages setup [1] and Code Reviews for Jupyter Notebooks [2]
- [0] CloudSeed https://about.gitlab.com/handbook/engineering/incubation/clo... - [1] https://about.gitlab.com/releases/2022/09/22/gitlab-15-4-rel... - [2] https://docs.gitlab.com/ee/user/project/repository/jupyter_n...
oxymoron
In the extreme case, consider a small company whose few owners and employees suddenly pass away (e.g. in a plane crash). The fact that the company suddenly has 0 employees and even 0 shareholders does not immediately terminate the company. It still continues to exist as a business and legal entity, until the government / lawyers either find new shareholders (typically heirs) who are willing to run the company, or appoint a director to initiate foreclosure.
If you think there is a better name to capture that I'm sure it would be considered.
I don't know how things are organized within GitLab, but it's pretty plausible to me that one engineer could put together the completion portion of the VSCode extension – you can see the code here: https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/blob...
Fred has also been providing pull requests to improve FauxPilot, which I very much appreciate! :)
FauxPilot – an attempt to build a locally hosted version of GitHub Copilot - https://news.ycombinator.com/item?id=32327711 - Aug 2022 (79 comments)
- Open VSX: https://open-vsx.org
- Source: https://github.com/eclipse/openvsx
VSCodium and Eclipse Theia use Open VSX by default.
- VSCodium: https://github.com/VSCodium/vscodium#extensions-and-the-mark...
- Eclipse: https://www.eclipse.org/community/eclipse_newsletter/2020/ma...
https://github.com/hediet/vscode-drawio/issues/141
> Hi ;)
> I never published a version v999.0! It seems like you are using the unofficial open vsx marketplace (where, apparently, anyone can upload anything). You can find an issue here in this repository about it.
> Unfortunately, someone uploaded the extension in that version which blocks any further updates with that name.
> For now I believe in Microsofts vision. I don't think a secondary marketplace is good for the community - It just causes confusions like this.
> If you setup a github action that automatically publishes this extension to open vsx, please open a PR! ;)
The established practice of having random individuals set up ad-hoc mirrors of VSCode extensions is a serious security issue.
If Open VSX wants to mirror VSCode extensions, that's okay - but they should do so with an automated process that mirrors ALL extensions and do not allow for random people to silently change the code of an extension with no clear indication to people installing it.
If, however, someone want to copy the code of an existing VSCode extension, change some things and upload it to Open VSX, that's super okay too (and in the spirit of open source), but please fork it and clearly indicate in the description that the extension is a fork, linking to the source code of the original extension. The currently situation is unacceptable.
But, Open VSX could and should do more for people to verify the provenance of their packages. There are many ways to do this. Perhaps one way is to have two kinds of packages (readily apparent in the description): one automatically imported from the VSCode marketplace (and guaranteed to match the upstream package exactly), and another kind published specifically for Open VSX.
Right now it seems to be a better security practice to simply ignore the VSCode marketplace terms of use and use it anyway on open source builds (either Code - OSS or VS Codium), instead of using Open VSX. And that's a shitty situation to be in.
I’d much rather see effort being put into other areas of the GitLab Workflow extension (like being able to approve / view approvals of MRs).
https://github.com/moyix/fauxpilot/blob/main/documentation/s...
And we have an initial GPU support matrix page here:
https://github.com/moyix/fauxpilot/wiki/GPU-Support-Matrix
A planned feature is to implement INT8 and INT4 support for the CodeGen models, which would let the models run with much less VRAM (~2x smaller for INT8 and ~4x for INT4) :)
That would certainly put the larger models within reach of most users. Part of my reluctance to deploy this myself was I'd have to either redline the VRAM on a 8GB card or choose the smallest model.
Would this require a retrain of the models?
It would be pretty simple to run the contents through the tokenizer using e.g. this JS lib that wraps Huggingface Tokenizers [2] and then keep only the last (2048-requested_tokens) tokens in the prompt. If they don't get to it first I may try to throw this together soon.
[1] https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/blob...
Also, how do they compare to copilot?
As for which to use, you'd want to take the largest model that can you can fine-tune (not necessarily on your machine) and fits comfortably in your machine. The small models aren't as flexible and are basically just a cleverer autocomplete. Copilot is a lot smarter than that and smarter than all models I've tested up to 6B. It can often cleverly work out a lot of local patterns for what you're doing and this is true surprisingly often for novel languages, math, understanding graph notation, categorization policies and much, much more.
I'd gone in hoping I could remove my dependence on Copilot but left disappointed. The small models up to 6B just don't compare. I don't have the resources to run the 13B model which is probably behind anyways due to not having trained as long on as much as copilot (which is continuously updated). I also suspect Copilot has a great deal of hand-coded hacks and caching tricks to improve the user experience.
I have high hopes for the BigCode project too; they will get to take advantage of a lot of things that have been learned about how to train code models effectively.
One last note – I think that many of the improvements to Copilot since its release are attributable to "prompt engineering" and client-side smarts about what context should be included; I'm not certain, but I can believe the underlying Codex model used hasn't changed much (if at all) since code-davinci-002.
You already depend on Copilot?
> if you have two NVIDIA RTX 3080 GPUs, you should be able to run the 6B model by putting half on each GPU.
Thats quite excessive, but nice that it can be ran locally.
> Note that the VRAM requirements listed by setup.sh are total -- if you have multiple GPUs, you can split the model across them.
This might not work with the upcoming RTX 40x0 GPUs unless they have enough memory, as they abolished NVLink in that series.
Edit: I'm now seeing there are smaller models too. Going to give it a try tomorrow.