Coder Social home page Coder Social logo

gchq / bailo Goto Github PK

View Code? Open in Web Editor NEW
70.0 70.0 10.0 152.45 MB

Managing the lifecycle of machine learning to support scalability, impact, collaboration, compliance and sharing.

License: Apache License 2.0

TypeScript 26.88% JavaScript 3.78% CSS 2.22% Shell 0.14% Smarty 0.07% Python 2.69% Jupyter Notebook 3.49% Makefile 0.02% Dockerfile 0.04% Mermaid 0.01% Batchfile 0.02% MDX 3.67% HTML 56.97%
ml mlops nodejs

bailo's People

Contributors

a3957273 avatar a67584 avatar araddcc002 avatar araddcc008 avatar araddcc011 avatar araddcc012 avatar araddcc013 avatar at55425 avatar bw27492 avatar dependabot[bot] avatar gb27247 avatar jo77419 avatar jr40159 avatar js21663 avatar k25831 avatar m19671 avatar p20179 avatar tt38665 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

bailo's Issues

BAI-52 Reduce usage of 'any' type within TypeScript

At the time of writing this ticket we use 'any' 188 times throughout our application. This leads to less stringent TypeScript checking and could cause errors. We should look to replace most of these 'any' statements with actual types.

BAI-59 Support deletion of models / deployments

There are four methods of deletion we should consider:

  • Retire a deployment - this is a soft delete of a deployment. The deployment is marked for deletion and becomes unavailable. An automatic process then removes the deployment after a set period of time
  • Retire a variant - this is a soft delete of a variant of a model including all deployments. The model variant and any deployments ares marked for deletion and becomes unavailable. An automatic process then removes the model and deployment after a set period of time
  • Delete - This is a the full removal of the model including all variants. The model card is kept so that there is a record of the model
  • Purge - This is a the full removal of the model, the model cards from live and all backups so that no trace exists beyond the logs. This may occur when copyrighted data is uploaded to the system.. It may be a manual, documented process.

Clean up helm chart

Helm chart should have dependencies as subcharts.

Secrets should be generated via helm functions instead of via typescript file.

BAI-97 Support using 'AWS Cognito' for authentication

We intend to support users hosting Bailo on AWS EKS. As part of this, we should support using AWS Cognito for authentication. We already have a Cognito instance setup in our test environment, this ticket only relates to connecting it to our application.

Bailo Helm Install

Hello, Im facing an auth issues when installing bailo with helm, everything is running but an auth issue with the backend.

Gives auth error when connecting to mongoDB, have all the secret keys in place, host is also correct.

Any ideas?

Endpoint to upload docker images

Hi,
Is there an endpoint to upload docker images to the registry instead of pushing it manually through CLI?
I see there's one to retrieve images.
bailo-issue

Ports are not available: exposing port TCP 0.0.0.0:5000 -> 0.0.0.0:0: listen tcp 0.0.0.0:5000: bind: address already in use

Subject of the issue

When running the docker-compose up command everything builds correctly but the bailio-regiustry service will not start and I get the following error:

Ports are not available: exposing port TCP 0.0.0.0:5000 -> 0.0.0.0:0: listen tcp 0.0.0.0:5000: bind: address already in use

From some research on the internet it appears that when running on a Mac, port 5000 is used for Airplay by default.

Do you have any suggestions or are you able to provide a docker-compose script that uses an alternate port for the registry service?

Your environment

Apple Macbook Pro
M1 Pro

Completely fresh install of Docker, no other containers running.

  • version / commit hash of bailo (git rev-parse HEAD)
  • runtime environment (docker-compose, openshift)

Steps to reproduce

Follow the instructions on the GitHub page to run in docker

Expected behaviour

Bailio should run as expected

Actual behaviour

Error as above

BAI-79 Update Python client

Our Python client is out of date and doesn't support working with the latest version of Bailo. It should be updated to be compatible with the new API endpoints.

BAI-107 Running Docker with default config leads S2I warns that it cannot unmarshal the configuration.

This does not affect builds, which still work. It just errors out in the logs with the following error:

$ s2i build /var/folders/cs/fd4s_57x2b7_2h26xdfvgv0m0000gp/T/0069ef1c-2da6-4197-bce8-ffa80ede45cc seldonio/seldon-core-s2i-python37:1.10.0 localhost:5000/internal/test-model-5cheqa:1error: Unable to load docker config: json: cannot unmarshal string into Go value of type docker.dockerConfig

(Docker for Mac, default ~/.docker/config.json)

Docker build fails

Subject of the issue

I am following the instructions mentioned in Helm chart instructions. The configuration step mentions creating and hosting Bailo image. The image can be built using docker build -t bailo . from root directory of project.

This step fails to build a docker image.

Your environment

  • version / commit hash of bailo (git rev-parse HEAD) : main branch
  • runtime environment (docker-compose, openshift) : kubectl / helm

Steps to reproduce

Running docker build -t bailo . from root directory.

Error

unable to convert uid/gid chown string to host mapping: can't find gid for group nextjs: no such group: nextjs

COPY command in docker recommends using --chown=<user>:<group>. Replacing --chown=nextjs:nextjswith --chown=nextjs:nodejs, the image build is a success.

Running the container, I get the following error

 [email protected] start
> cross-env NODE_ENV=production node dist/server/index.js

node:internal/modules/cjs/loader:959
  throw err;
  ^

Error: Cannot find module '../../lib/p-mongo-queue/pMongoQueue'
Require stack:
- /app/dist/server/utils/queues.js
- /app/dist/server/processors/processDeployments.js
- /app/dist/server/index.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:956:15)
    at Function.Module._load (node:internal/modules/cjs/loader:804:27)
    at Module.require (node:internal/modules/cjs/loader:1028:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/app/dist/server/utils/queues.js:10:39)
    at Module._compile (node:internal/modules/cjs/loader:1126:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
    at Module.load (node:internal/modules/cjs/loader:1004:32)
    at Function.Module._load (node:internal/modules/cjs/loader:839:12)
    at Module.require (node:internal/modules/cjs/loader:1028:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/app/dist/server/processors/processDeployments.js:13:18)
    at Module._compile (node:internal/modules/cjs/loader:1126:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
    at Module.load (node:internal/modules/cjs/loader:1004:32)
    at Function.Module._load (node:internal/modules/cjs/loader:839:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/app/dist/server/utils/queues.js',
    '/app/dist/server/processors/processDeployments.js',
    '/app/dist/server/index.js'
  ]
}
npm notice 
npm notice New minor version of npm available! 8.15.0 -> 8.19.2
npm notice Changelog: https://github.com/npm/cli/releases/tag/v8.19.2
npm notice Run npm install -g [email protected] to update!
npm notice 

On comparing Dockerfile with Dockerfile.prod, I find that the following line is missing

COPY --from=builder --chown=nextjs:nextjs /app/lib/p-mongo-queue ./dist/lib/p-mongo-queue

Adding the above line with the right group, the build is a success.

Pushing this image and running the instructions as provided in helm chart instruction, the pod crashes with CrashLoopBackOff error.

Pod Events

Events:
  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  102s               default-scheduler  Successfully assigned bailo/bailo-6b995bcf9-g7wqh to bailo-control-plane
  Normal   Pulling    101s               kubelet            Pulling image "dudeperf3ct7/bailo:latest"
  Normal   Pulled     20s                kubelet            Successfully pulled image "dudeperf3ct7/bailo:latest" in 1m20.652425634s
  Warning  Unhealthy  20s                kubelet            Readiness probe failed: Get "http://10.244.0.5:3000/": dial tcp 10.244.0.5:3000: connect: connection refused
  Normal   Created    19s (x2 over 20s)  kubelet            Created container bailo
  Normal   Started    19s (x2 over 20s)  kubelet            Started container bailo
  Normal   Pulled     19s                kubelet            Container image "dudeperf3ct7/bailo:latest" already present on machine
  Warning  BackOff    12s (x4 over 18s)  kubelet            Back-off restarting failed container

Tailing log for the pod provides following information

Failed to open temporary file /etc/ssl/certs/bundleXXXXXX for ca bundle
No schemas setup script set; You will have to add schemas after startup
Running 'npm run start'

Expected behaviour

Everything should work. i.e. just building the image and adding that to helm should give access to Model UI at 3000 port.

Supporting custom schema for upload

There is no documentation around how to create a custom schema (for upload and deployment) in Bailo.

From what I gather perusing through the code, there are example upload and deployment json schemas inside example_schemas folder that are used as default.

The repo does mention a way

Some example schemas are installed by default. More schemas can be added by altering and running the addDeploymentSchema.ts and addUploadSchema.ts files.

ts-node --project tsconfig.server.json server/scripts/addDeploymentSchema.ts
ts-node --project tsconfig.server.json server/scripts/addUploadSchema.ts

There are various references pointing to example schema being tightly coupled with front-end (written using typescript).

Is there a way to add new fields or keys to model cards in the json schema? Will the front-end reflect the changes automatically?

Migrate BAILO to GitHub

Requested Feature

We'd like to open source Bailo so that we can collaborate with the community.

Justification for feature

It'll let us create a uniform template across multiple organisations to handle information about models.

Possible Solution

Migrate BAILO to GitHub.

BAI-133 Investigate why additional fields are not being deleted from boolean questions

Subject of the issue

When you select "yes" on a boolean question in the upload/deployment forms, if there's a dependency it will sometimes append an additional question (usually a text field prompting users to explain why they selected "yes") object. If you then change your answer to "no", the formData will keep the additional text object, meaning it causes validation issues. These have been band-aid fixed for now so that the validator ignores dependency errors, but we need to find out if we can remove the additional question objects completely from the form data if the user selects "no".

Steps to reproduce

  • Select "Yes" on any boolean question that has a dependency
  • Enter a value in the dependency question field that appears (usually a text field)
  • Change "Yes" to "No"in the parent question field

Expected behaviour

The dependency question should disappear from the form and the object removed from the form data

Actual behaviour

The dependency question disappears from the form, but the answer entered still exists in the form's data.

BAI-22 Support uploading '.tar.gz' files to /upload

A user should be able to upload a .tar.gz file and receive a built image, in the same way as uploading the same .zip file. The program should automatically determine whether the file is a .tar.gz or a .zip file and unpack it as specified.

To complete this:

  • The UI should accept files other than .zip (src/UploadFlow/UploadFile.tsx & src/common/FormFlow/FormFlow.tsx)
  • server/routes/v1/upload.ts should accept .tar.gz files.
  • server/utils/build.ts should be able to unzip .tar.gz files.

You can use the default zlib library to uncompress, and tar-stream to parse the tar file.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.