by sicariusnoctis on 6/8/23, 4:42 AM with 3 comments
by slewis on 6/8/23, 2:34 PM
It's a UI toolkit built for programmers that can be reprogrammed from the UI itself. You might call it a "yes-code UI" :)
I'm very happy that we were able to release Weave under Apache2 yesterday, and there is a lot of cool new technology in here that we haven't had a chance to describe yet! I'll just try to give a quick tech summary for now.
There are three core components in Weave: Types, Ops, and Panels.
Ops are typed functions like:
@weave.op()
def flip_lr(im: Image.Image) -> Image.Image:
return im.transpose(Image.Transpose.FLIP_LEFT_RIGHT)
Panels are UI elements that register to render a given type: @weave.type()
class BertvizHeadView(weave.Panel):
id = "BertvizHeadView"
input_node: weave.Node[huggingface.ModelOutputAttention]
@weave.op()
def render(self) -> weave.panels.PanelHtml:
html = bertviz_head_view(self.input_node)
return weave.panels.PanelHtml(html)
And they can render other panels.Panels can expose editable expressions (compositions of Weave ops) to the user, to give them control over what data transforms happen.
We call it Weave because it "Weaves a compute graph through the UI".
Weave includes a vectorizing DAG execution engine built on apache arrow, serialization and data versioning capabilities, and batteries Panels like Table and Plot.
We'll be writing and sharing a lot more now that the release is done. In the meantime, happy to answer any questions!