Saravanan666/pypi-org huggingface dataset:
Package: jax-smi
JAX Synergistic Memory Inspectorjax-smiis a tool for real-time inspection of the memory usage of a JAX process. It is similar tonvidia-smifor GPU, but works on multiple platforms including CPU, GPU and TPU.On TPU platforms,jax-smiis the only way to monitor TPU memory usage. On GPU platforms,jax-smiis also preferable tonvidia-smi. The latter is unable to report real-time memory usage of JAX processes, as JAX alwayspre-allocates 90% of the GPU memoryby default.This project is supported by Cloud TPUs from Google'sTPU Research Cloud(TRC).InstallationInstallgo. On Ubuntu, this is usually done by:sudoapt-getinstallgolangIf you followedtpu-starterto set up the TPU environment,goshould be already installed.Then installjax-smiwith:pipinstalljax-smiUsageIn your JAX script:fromjax_smiimportinitialise_trackinginitialise_tracking()# some computation...Open a shell and run:jax-smiApproachSave the memory profile to/dev/shm/memory.profin a separate thread every 1 second usingjax.profiler.save_device_memory_profile().Inspect the memory profile withgo tool pprof -tags /dev/shm/memory.prof.Seehttps://twitter.com/ayaka14732/status/1565013139594551296for more details.LimitationsTracing can only be performed by one process at a time. If tracing is performed by multiple JAX processes, they will write the memory profiles to the same file, which will lead to conflicts.Thejax-smicommand line tool cannot detect if a memory profile file is out of date. Therefore, even if no JAX process is running, the tool will still read the outdated memory profile and report outdated memory usage information.
Package: jaxspec
jaxspec:warning:jaxspec is still in early release: expect bugs, breaking API changes, undocumented features and lack of functionalitiesjaxspecis an X-ray spectral fitting library built in pure Python. It can currently load an X-ray spectrum (in the OGIP standard), define a spectral model from the implemented components, and calculate the best parameters using state-of-the-art Bayesian approaches. It is built on top of JAX to provide just-in-time compilation and automatic differentiation of the spectral models, enabling the use of sampling algorithm such as NUTS.jaxspecis written in pure Python, and has no dependancy toHEASoft, and can be installed directly using thepipcommand.Documentation :https://jaxspec.readthedocs.io/en/latest/InstallationWe recommend the users to start from a fresh Python 3.10conda environment.conda create -n jaxspec python=3.10
conda activate jaxspecOnce the environment is set up, you can install jaxspec directly from pypipip install jaxspec --upgrade
Package: jax-toolkit
jax_toolkitA collection of jax functions to help with common machine/deep learning related functionality.Documentation,PyPiThis library currently contains the basics for a number of losses and metrics. We intend to add more complexity and functionality as and when it's needed - of course contributions/pull requests/bug reports etc. are very welcome if you discover problems or need something that is currently missing.Installationpipinstalljax_toolkitOr for additional loss functionutils:pipinstalljax_toolkit[losses_utils]
Package: jax-tools
Jax ToolsJax common toolsInstallpip3installjax-toolsupdatepip3installjax-tools--upgradeUsageUse network port detectionnddest_ipdest_portUse loggerfromjax_tools.loggerimportloggerlogger.info('info')logger.debug('debug')logger.warning('warning')logger.error('error')logger.critical('critical')Use sshfromjax_tools.sshimportSSHClientssh_client=SSHClient(host='dest_ip',port=22,username='username',password='password')print(ssh_client.run_cmd('ls'))
Package: jaxtorch
Jaxtorch (a jax nn library)This is my jax based nn library. I created this because I was annoyed
by the complexity and 'magic'-ness of the popular jax frameworks
(flax, haiku).The objective is to enable pytorch-like model definition and training
with a minimum of magic. Simple example:importjaximportjax.numpyasjnpimportjaxlibimportjaxtorch# Modules are just classes that inherit jaxtorch.ModuleclassLinear(jaxtorch.Module):# They can accept any constructor parametersdef__init__(self,in_features:int,out_features:int,bias:bool=True):super().__init__()# Parameters are represented by a Param type, which identifies# them, and specifies how to initialize them.self.weight=jaxtorch.init.glorot_normal(out_features,in_features)asserttype(self.weight)isjaxtorch.Paramifbias:self.bias=jaxtorch.init.zeros(out_features)else:self.bias=None# The forward function accepts cx, a Context object as the first argument# always. This provides random number generation as well as the parameters.defforward(self,cx:jaxtorch.Context,x):# Parameters are looked up in the context using the stored identifier.y=x@jnp.transpose(cx[self.weight])ifself.bias:y=y+cx[self.bias]returnymodel=Linear(3,3)# You initialize the weights by passing a RNG key.# Calling init_weights also names all the parameters in the Module tree.params=model.init_weights(jax.random.PRNGKey(0))# Parameters are stored in a dictionary by name.asserttype(params)isdictasserttype(params[model.weight.name])isjaxlib.xla_extension.DeviceArrayassertmodel.weight.name=='weight'defloss(params,key):cx=jaxtorch.Context(params,key)x=jnp.array([1.0,2.0,3.0])y=jnp.array([4.0,5.0,6.0])returnjnp.mean((model(cx,x)-y)**2)f_grad=jax.value_and_grad(loss)for_inrange(100):(loss,grad)=f_grad(params,jax.random.PRNGKey(0))params=jax.tree_util.tree_map(lambdap,g:p-0.01*g,params,grad)print(loss)# 4.7440533e-08
Package: jaxtpu
jaxtpuA helper package to install the latest JAX on TPUs, along with all necessary dependencies (e.g. libtpu-nightly)WARNING: This repo is in development. It was automatically generated withmkpylib. If you're reading this message, it means that I use this repo for my own purposes right now. It might not do anything at all; the default functionality isprint('TODO').If you really want to try it out, feel free. I recommend reading through the code and commit history to see if it does what you need, orask mefor status updates.Stay tuned!Installpython3 -m pip install -U jaxtpuUsageimportjaxtpuprint('TODO')LicenseMITContactA library byShawn Presser. If you found it useful, please considerjoining my patreon!My Twitter DMs are always open; you shouldsend me one! It's the best way to reach me, and I'm always happy to hear from you.Twitter:@theshawwnPatreon:https://www.patreon.com/shawwnHN:sillysaurusxWebsite:shawwn.com
Package: jax-tqdm
JAX-tqdmAdd atqdmprogress bar to your JAX scans and loops.InstallationInstall with pip:pipinstalljax-tqdmExample usageinjax.lax.scanfromjax_tqdmimportscan_tqdmfromjaximportlaximportjax.numpyasjnpn=10_000@scan_tqdm(n)defstep(carry,x):returncarry+1,carry+1last_number,all_numbers=lax.scan(step,0,jnp.arange(n))injax.lax.fori_loopfromjax_tqdmimportloop_tqdmfromjaximportlaxn=10_000@loop_tqdm(n)defstep(i,val):returnval+1last_number=lax.fori_loop(0,n,step,0)Print RateBy default, the progress bar is updated 20 times over the course of the scan/loop
(for performance purposes, seebelow). This
update rate can be manually controlled with theprint_ratekeyword argument. For
example:fromjax_tqdmimportscan_tqdmfromjaximportlaximportjax.numpyasjnpn=10_000@scan_tqdm(n,print_rate=2)defstep(carry,x):returncarry+1,carry+1last_number,all_numbers=lax.scan(step,0,jnp.arange(n))will update every other step.Progress bar optionsAny additional keyword arguments are passed to thetqdmprogress bar constructor. For example:fromjax_tqdmimportscan_tqdmfromjaximportlaximportjax.numpyasjnpn=10_000@scan_tqdm(n,print_rate=1,desc='progress bar',position=0,leave=False)defstep(carry,x):returncarry+1,carry+1last_number,all_numbers=lax.scan(step,0,jnp.arange(n))Why JAX-tqdm?JAX functions arepure,
so side effects such as printing progress when running scans and loops are not allowed.
However, thehost_callback modulehas primitives for calling Python functions on the host from JAX code. This can be used
to update a Python tqdm progress bar regularly during the computation. JAX-tqdm
implements this for JAX scans and loops and is used by simply adding a decorator to the
body of your update function.Note that as the tqdm progress bar is only updated 20 times during the scan or loop,
there is no performance penalty.The code is explained in more detail in thisblog post.DevelopersDependencies can be installed withpoetryby runningpoetryinstallPre-Commit HooksPre commit hooks can be installed by runningpre-commitinstallPre-commit checks can then be run usingtasklintTestsTests can be run withtasktest
Package: jax-triton
jax-tritonThejax-tritonrepository contains integrations betweenJAXandTriton.Documentation can be foundhere.This is not an officially supported Google product.QuickstartThe main function of interest isjax_triton.triton_callfor applying Triton
functions to JAX arrays, including insidejax.jit-compiled functions. For
example, we can definea kernel from the Triton
tutorial:importtritonimporttriton.languageastl@triton.jitdefadd_kernel(x_ptr,y_ptr,length,output_ptr,block_size:tl.constexpr,):"""Adds two vectors."""pid=tl.program_id(axis=0)block_start=pid*block_sizeoffsets=block_start+tl.arange(0,block_size)mask=offsets<lengthx=tl.load(x_ptr+offsets,mask=mask)y=tl.load(y_ptr+offsets,mask=mask)output=x+ytl.store(output_ptr+offsets,output,mask=mask)Then we can apply it to JAX arrays usingjax_triton.triton_call:importjaximportjax.numpyasjnpimportjax_tritonasjtdefadd(x:jnp.ndarray,y:jnp.ndarray)->jnp.ndarray:out_shape=jax.ShapeDtypeStruct(shape=x.shape,dtype=x.dtype)block_size=8returnjt.triton_call(x,y,x.size,kernel=add_kernel,out_shape=out_shape,grid=(x.size//block_size,),block_size=block_size)x_val=jnp.arange(8)y_val=jnp.arange(8,16)print(add(x_val,y_val))print(jax.jit(add)(x_val,y_val))Seethe examples
directory, especiallyfused_attention.pyandthe fused attention
ipynb.Installation$pipinstalljax-tritonMake sure you have a CUDA-compatiblejaxlibinstalled.
For example you could run:$pipinstall"jax[cuda11_cudnn82]"-fhttps://storage.googleapis.com/jax-releases/jax_cuda_releases.htmlDevelopmentTo developjax-triton, you can clone the repo with:$gitclonehttps://github.com/jax-ml/jax-triton.gitand do an editable install with:$cdjax-triton
$pipinstall-e.To run thejax-tritontests, you'll needpytestandabsl-py:$pipinstallpytestabsl-py
$pytesttests/
Package: jaxtro
Jaxtro 🔭 - A JAX-based gravitational-wave population inferenceJaxtro is a JAX-based gravitational-wave population inference package. It is built on top ofJAXamplerand provides a high-level interface for sampling from a wide range of gravitational-wave population models.It is currently under active development and is not ready for production use. If you would like to contribute, please see thecontributing guidelines.InstallationYou may install the latest released version of Jaxtro through pip by doingpip3install--upgradejaxtroYou may install the bleeding edge version by cloning this repo, or doingpip3install--upgradegit+https://github.com/Qazalbash/jaxtroIf you would like to take advantage of CUDA, you will additionally need to install a specific version of JAX by doingpipinstall--upgrade"jax[cuda12_pip]"-fhttps://storage.googleapis.com/jax-releases/jax_cuda_releases.htmlRequirementsJaxtro requires Python 3.10 or higher. It also requires the following packages:jaxampler
numpy
tqdmThe test suite is based on pytest. To run the tests, one needs to install pytest and runpytestat the root directory of this repo.Citing JaxtroIf you use Jaxtro in your research, please cite the following paper:@software{jaxtro2023github,author={Meesum Qazalbash, Muhammad Zeeshan},title={{jaxtro}: A JAX-based gravitational-wave population inference},url={http://github.com/Qazalbash/jaxtro},version={0.0.2},year={2023}}
Package: jaxtyping
jaxtypingType annotationsand runtime type-checkingfor:shape and dtype ofJAXarrays;(Now also supports PyTorch, NumPy, and TensorFlow!)PyTrees.For example:fromjaxtypingimportArray,Float,PyTree# Accepts floating-point 2D arrays with matching axesdefmatrix_multiply(x:Float[Array,"dim1 dim2"],y:Float[Array,"dim2 dim3"])->Float[Array,"dim1 dim3"]:...defaccepts_pytree_of_ints(x:PyTree[int]):...defaccepts_pytree_of_arrays(x:PyTree[Float[Array,"batch c1 c2"]]):...InstallationpipinstalljaxtypingRequires Python 3.9+.JAX is an optional dependency, required for a few JAX-specific types. If JAX is not installed then these will not be available, but you may still use jaxtyping to provide shape/dtype annotations for PyTorch/NumPy/TensorFlow/etc.The annotations provided by jaxtyping are compatible with runtime type-checking packages, so it is common to also install one of these. The two most popular aretypeguard(which exhaustively checks every argument) andbeartype(which checks random pieces of arguments).DocumentationAvailable athttps://docs.kidger.site/jaxtyping.FinallySee also: other libraries in the JAX ecosystemEquinox: neural networks.Optax: first-order gradient (SGD, Adam, ...) optimisers.Diffrax: numerical differential equation solvers.Optimistix: root finding, minimisation, fixed points, and least squares.Lineax: linear solvers.BlackJAX: probabilistic+Bayesian sampling.Orbax: checkpointing (async/multi-host/multi-device).sympy2jax: SymPy<->JAX conversion; train symbolic expressions via gradient descent.Eqxvision: computer vision models.Levanter: scalable+reliable training of foundation models (e.g. LLMs).PySR: symbolic regression. (Non-JAX honourable mention!)DisclaimerThis is not an official Google product.
Package: jax-unirep
jax-unirepA performant reimplementation of the UniRep protein featurization model in JAX.The UniRep model was developed in George Church's lab,
see the original publicationhere(bioRxiv) orhere(Nature Methods),
as well as therepositorycontaining the original model.This repo is a self-contained and easily customizable version of the UniRep model,
with additional utility APIs that support protein engineering workflows.InstallationEnsure that your compute environment allows you to run JAX code.
(A modern Linux or macOS with a GLIBC>=2.23 is probably necessary.)Then, you can install from PyPI:pipinstalljax-unirepIf you want the latest and greatest, you can install directly from source:pipinstallgit+https://github.com/ElArkk/jax-unirep.gitMore DetailsDocumentation on how to usejax-unirepis availablehere.We highly encourage community contributions to this project!
For more information, see the section in the docs on ourcontributingguidelines.To read more about how we reimplemented the model in JAX,
check out our preprint
onbioarxiv.LicenseAll the model weights are licensed under the terms of
Creative Commons Attribution-NonCommercial 4.0 International License.
To view a copy of this license,
visithere)
or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.Otherwise the code in this repository
is licensed under the terms ofGPL v3.
Package: jax-util
jax-utiljax/_src/util.py extracted as a standalone Python libraryWARNING: This repo is in development. It was automatically generated withmkpylib. If you're reading this message, it means that I use this repo for my own purposes right now. It might not do anything at all; the default functionality isprint('TODO').If you really want to try it out, feel free. I recommend reading through the code and commit history to see if it does what you need, orask mefor status updates.Stay tuned!Installpython3 -m pip install -U jax-utilUsageimportjax_utilprint('TODO')LicenseMITContactA library byShawn Presser. If you found it useful, please considerjoining my patreon!My Twitter DMs are always open; you shouldsend me one! It's the best way to reach me, and I'm always happy to hear from you.Twitter:@theshawwnPatreon:https://www.patreon.com/shawwnHN:sillysaurusxWebsite:shawwn.com
Package: jaxutils
JaxUtilsJaxUtilsprovides utility functions for theJaxGaussianProcessesecosystem.ContentsPyTreeDatasetPyTreeOverviewjaxutils.PyTreeis a mixin class forregistering a python class as a JAX PyTree. You would define your Python class as follows.classMyClass(jaxutils.PyTree):...ExampleimportjaxutilsfromjaxtypingimportFloat,ArrayclassLine(jaxutils.PyTree):def__init__(self,gradient:Float[Array,"1"],intercept:Float[Array,"1"])->Noneself.gradient=gradientself.intercept=interceptdefy(self,x:Float[Array,"N"])->Float[Array,"N"]returnx*self.gradient+self.interceptDatasetOverviewjaxutils.Datasetis a datset abstraction. In future, we wish to extend this to a heterotopic and isotopic data abstraction.Exampleimportjaxutilsimportjax.numpyasjnp# InputsX=jnp.array([[1.0,2.0],[3.0,4.0],[5.0,6.0]])# Outputsy=jnp.array([[7.0],[8.0],[9.0]])# DatsetD=jaxutils.Dataset(X=X,y=y)print(f'The number of datapoints is{D.n}')print(f'The input dimension is{D.in_dim}')print(f'The output dimension is{D.out_dim}')print(f'The input data is{D.X}')print(f'The output data is{D.y}')print(f'The data is supervised{D.is_supervised()}')print(f'The data is unsupervised{D.is_unsupervised()}')The number of datapoints is 3
The input dimension is 2
The output dimension is 1
The input data is [[1. 2.]
 [3. 4.]
 [5. 6.]]
The output data is [[7.]
 [8.]
 [9.]]
The data is supervised True
The data is unsupervised FalseYou can also add dataset together to concatenate them.# New inputsX_new=jnp.array([[1.5,2.5],[3.5,4.5],[5.5,6.5]])# New outputsy_new=jnp.array([[7.0],[8.0],[9.0]])# New datasetD_new=jaxutils.Dataset(X=X_new,y=y_new)# Concatenate the two datasetsD=D+D_newprint(f'The number of datapoints is{D.n}')print(f'The input dimension is{D.in_dim}')print(f'The output dimension is{D.out_dim}')print(f'The input data is{D.X}')print(f'The output data is{D.y}')print(f'The data is supervised{D.is_supervised()}')print(f'The data is unsupervised{D.is_unsupervised()}')The number of datapoints is 6
The input dimension is 2
The output dimension is 1
The input data is [[1.  2. ]
 [3.  4. ]
 [5.  6. ]
 [1.5 2.5]
 [3.5 4.5]
 [5.5 6.5]]
The output data is [[7.]
 [8.]
 [9.]
 [7.]
 [8.]
 [9.]]
The data is supervised True
The data is unsupervised False
Package: jaxutils-nightly
This project has now been incorporated intoGPJax.JaxUtilsJaxUtilsprovides utility functions for theJaxGaussianProcessesecosystem.ContentsPyTreeDatasetPyTreeOverviewjaxutils.PyTreeis a mixin class forregistering a python class as a JAX PyTree. You would define your Python class as follows.classMyClass(jaxutils.PyTree):...ExampleimportjaxutilsfromjaxtypingimportFloat,ArrayclassLine(jaxutils.PyTree):def__init__(self,gradient:Float[Array,"1"],intercept:Float[Array,"1"])->Noneself.gradient=gradientself.intercept=interceptdefy(self,x:Float[Array,"N"])->Float[Array,"N"]returnx*self.gradient+self.interceptDatasetOverviewjaxutils.Datasetis a datset abstraction. In future, we wish to extend this to a heterotopic and isotopic data abstraction.Exampleimportjaxutilsimportjax.numpyasjnp# InputsX=jnp.array([[1.0,2.0],[3.0,4.0],[5.0,6.0]])# Outputsy=jnp.array([[7.0],[8.0],[9.0]])# DatsetD=jaxutils.Dataset(X=X,y=y)print(f'The number of datapoints is{D.n}')print(f'The input dimension is{D.in_dim}')print(f'The output dimension is{D.out_dim}')print(f'The input data is{D.X}')print(f'The output data is{D.y}')print(f'The data is supervised{D.is_supervised()}')print(f'The data is unsupervised{D.is_unsupervised()}')The number of datapoints is 3
The input dimension is 2
The output dimension is 1
The input data is [[1. 2.]
 [3. 4.]
 [5. 6.]]
The output data is [[7.]
 [8.]
 [9.]]
The data is supervised True
The data is unsupervised FalseYou can also add dataset together to concatenate them.# New inputsX_new=jnp.array([[1.5,2.5],[3.5,4.5],[5.5,6.5]])# New outputsy_new=jnp.array([[7.0],[8.0],[9.0]])# New datasetD_new=jaxutils.Dataset(X=X_new,y=y_new)# Concatenate the two datasetsD=D+D_newprint(f'The number of datapoints is{D.n}')print(f'The input dimension is{D.in_dim}')print(f'The output dimension is{D.out_dim}')print(f'The input data is{D.X}')print(f'The output data is{D.y}')print(f'The data is supervised{D.is_supervised()}')print(f'The data is unsupervised{D.is_unsupervised()}')The number of datapoints is 6
The input dimension is 2
The output dimension is 1
The input data is [[1.  2. ]
 [3.  4. ]
 [5.  6. ]
 [1.5 2.5]
 [3.5 4.5]
 [5.5 6.5]]
The output data is [[7.]
 [8.]
 [9.]
 [7.]
 [8.]
 [9.]]
The data is supervised True
The data is unsupervised False
Package: jaxwell
Jaxwell: GPU-accelerated, differentiable 3D iterative FDFD electromagnetic solverJaxwell isJAX+Maxwell:
an iterative solver for solving the finite-difference frequency-domain
Maxwell equations on NVIDIA GPUs.
Jaxwell is differentiable and fits seamlessly in the JAX ecosystem,
enabling nanophotonic inverse design problems to be cast as ML training jobs
and take advantage of the tsunami of innovations
in ML-specific hardware, software, and algorithms.Jaxwell is a finite-difference frequency-domain solver
that finds solutions to the time-harmonic Maxwell's equations, specifically:(∇ x ∇ x - ω²ε) E = -iωJfor the electric fieldEvia the APIx,err=jaxwell.solve(params,z,b)whereE → x,ω²ε → z,-iωJ → b,paramscontrols how the solve proceeds iteratively, anderris the error in the solution.Jaxwell usesdimensionless units,
assumesμ = 1everywhere,
and implements stretched-coordinate perfectly matched layers (SC-PML)
for absorbing boundary conditions.You can install Jaxwell withpip install git+https://github.com/jan-david-fischbach/jaxwell.gitbut the easiest way to get started is to go straight to the examplecolaboratory notebook.References:PMLs and diagonalization: [Shin2012] W. Shin and S. Fan. “Choice of the perfectly matched layer boundary condition for frequency-domain Maxwell's equations solvers.” Journal of Computational Physics 231 (2012): 3406–31COCG algorithm: [Gu2014] X. Gu, T. Huang, L. Li, H. Li, T. Sogabe and M. Clemens, "Quasi-Minimal Residual Variants of the COCG and COCR Methods for Complex Symmetric Linear Systems in Electromagnetic Simulations," in IEEE Transactions on Microwave Theory and Techniques, vol. 62, no. 12, pp. 2859-2867, Dec. 2014
Package: jaxxstorm-pulumi-awsloadbalancercontroller
AWS LoadBalancer Controller Pulumi PackageThis repo is aPulumi Packagerepresenting theAWS Load Balancer Controller. It installs everything needed to run an AWS Load Balancer Controller in anAmazon EKScluster. It will install:An adequately scoped IAM roleA Kubernetes deployment, with configurable replicasThe CRDs, if specifiedIt's written in Go, but thanks to Pulumi's multi language SDK generating capability, it create usable SDKs for all of Pulumi'ssupported languages:warning:This package is a work in progress: Please do not use this in a production environment!InstallingInstall Plugin BinaryBefore you begin, you'll need to install the latest version of the Pulumi Plugin usingpulumi plugin install:pulumi plugin install resource awsloadbalancercontroller 0.0.1-alpha.1621481781+0b34526c --server https://lbriggs.jfrog.io/artifactory/pulumi-packages/pulumi-awsloadbalancercontrollerThis installs the plugin into~/.pulumi/plugins.Install your chosen SDKNext, you need to install your desired language SDK using your languages package manager.Pythonpip3 install jaxxstorm-pulumi-awsloadbalancercontrollerNodeJSnpm install @jaxxstorm/pulumi-awsloadbalancercontrollerDotNetComing SoonGogo get -t github.com/jaxxstorm/pulumi-awsloadbalancercontroller/sdk/go/awsloadbalancercontrollerUsageOnce you've installed all the dependencies, you can use the library like any other Pulumi SDK. See theexamplesdirectory for examples of how you might use it.LimitationsCurrently, this package will only work successfully on Amazon EKS clusters withIAM Roles for Service Accountsenabled.
Package: jaxxstorm-pulumi-aws-securebaseline
Secure Baseline PackageA Pulumi multi language package to set up your AWS account architecture with a reasonable, secure baseline.A terraform module to set up your AWS account with the reasonably secure configuration baseline.
Most configurations are based onCIS Amazon Web Services Foundations v1.4.0andAWS Foundational Security Best Practices v1.0.0.It took inspiration from theTerraform Secure Baseline Module