Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extendability #1

Open
kabirkbr opened this issue Feb 22, 2021 · 3 comments
Open

Extendability #1

kabirkbr opened this issue Feb 22, 2021 · 3 comments

Comments

@kabirkbr
Copy link
Contributor

No description provided.

@kabirkbr kabirkbr changed the title High level requirements: Extendability Extendability Feb 22, 2021
@kabirkbr
Copy link
Contributor Author

kabirkbr commented Feb 24, 2021

alexey 2021/02/17 / slack

I have some doubts regarding a fully decentralized ontology. My intuition is that services should apparently be free to introduce new types using GADT / dependent types, and this doesn’t cause any conceptual problem. But I’m not that sure about new grounded types. I’m not sure if we are going to use grounded types in AI-DSL at all (e.g. we cannot purely formally define “time”; if AI-DSL type system / ontology has to refer to the concept of time, it will be a symbol grounded in the external world), but if yes, there should be some basic types built-in in AI-DSL. Maybe, it will be enough to have them and dependent types on top of them. It depends on how much semantics we want to involve in AI-DSL. For example, if someone wants to say that their service accepts 2D signals, it’s not an issue. But if we want to distinguish, e.g., optical images and MRT images, or songs (for the soundsplitter service) and voice (for speaker recognition) we need some standards to describe this, or otherwise it will be a mess. The next question, how and where these standards will be defined and how they will evolve. Maybe, we were not going to bite the bullet of real-world semantics in AI-DSL at all for now… But I’m also not sure about locally used Type Providers and FFIs either (i.e. types grounded not in physical world, but in some opaque computations). If we want these types to be used somewhere outside one service (and apparently if we want the service to have them in its API, we do want this), then they should be accessible outside it. Of course, if you only mean that services themselves can be considered as type providers, then it makes sense. But it means that these types cannot be reused separately from these services (e.g. MyServiceType a b means calling MyService with a and b type arguments). Other services can pass MyServiceType info to each other, but this will be just a reference to the unique service. So, it’s not an introduction of new sharable types. We can create a sizeTSize type this way, only if it is introduced as a service or if there is a global agreement that it refers to the concrete implementation of C++ size_t type. We can use type providers to introduce, say, pytorch tensors this way. But if one service just says “I have PyTorchTensor” type, and another service says the same, how can these types be identified? How can we check that we can pass PyTorchTensor output of one service to the input of another? They need to wrap the same computational entity, and we need to have means that the entity is the same. Maybe it is doable in a decentralized way, but looks complicated…

@kabirkbr
Copy link
Contributor Author

image

@kabirkbr
Copy link
Contributor Author

Nil, 18/02/2021 / Slack

It seems clear to me that we'll eventually want to formally define everything. I.e. actually purely define "time", "PyTorchTensor", etc (even if "purely" may sometime mean "experientially" when we don't know any better). Obviously that's a crazy big endeavour, but IMO necessary in the long run. If everything if formally defined, then decentralized consensus on semantics can be achieved I believe. Regardless, fortunately we don't need worry about that at this stage, although it's always nice to think about it.

And obviously AI will eventually be able to help, but that's another chapter.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant