---
# System prepended metadata

title: '<center><i class="fa fa-edit"></i> Fundamentals: Acumos-AI and Open-RAN </center>'
tags: [notes]

---

# <center><i class="fa fa-edit"></i> Fundamentals: Acumos-AI and Open-RAN </center>
###### tags: `notes`
:::info
**Goal:**
To understand how ACUMOS platform works, architecture of Open-RAN, and the essential features that are used for ML. 
- [x] How ACUMOS platform works
- [x] What is Open-RAN architecture 
- [x] Install ACUMOS-AI and what it could do
**Resources:**
[Daily Report by Christofel](https://hackmd.io/@christofel04/TEEP2020_Daily_Notes)
:::
## O-RAN Architecture 
Open RAN is a new standard (some kind of consortium, not 3GPP based) for RAN architecture which targeted to be deployed in 5G network. 

Basicly it's standarized the protocol between networking parts so, every manufacturer networking part of the telecommunication system could be work with every manufacturer networking part.

For example today you need Huawei's RRU to able to use with Huawei BBU. O-Ran defined a mencahism for you to able to use Nokia's RRU with Huawei's BBU.

The most problematic part in this system is the CPRI (Common Public Radio Interface), a fiber cable between BBU and RRU. Even this part is standarized by 3GPP, you cannot interchanged this part with other manufacturer part so you need to use the same manufacturer part for every BBU and RRU.

In order to understand how O-RAN deployed, you need to understand the architeture of the network. I will described the recent deployment architecture for the RAN.

![](https://i.imgur.com/UNzyOk4.png)

## O-RAN
So, O-RAN standarized the need of API to connect between every part. O-RAN is a Software community.

In business prespective, O-RAN will help small manufaturer (who can't build the whole ecosystem) like Cisco to participate in 5G technology. Cisco is excelent in building the BBU, but bad in building the RRU part (you can say lack of Radio talent). Cisco could focus in developing thee BBU and let other company manage the RRU for example Broadcom. This project also backed heavily by the operators, with ability to interchangeable the parts it will reduce the cost of operators to build the teleceommunication system.

## Acumos AI-Platform 
Acumos is a collaborative framework that is easy to build , share and deploy AI apps and works by linux Foundation.This framework used to form a distributed AI Marketplace also its community, that is enable the packaging, cataloging, and sharing of AI models . This platform can simplify Machine Learning model training, evaluation and deployment.

## Advantage of Acumos AI 
- Offer a lot of ease platform to build, share, and deploy Ml models. 
- Distributed in AI marketplace so it could reduce redundacy and increase communication between AI developer. 

## Installing Acumos AI 
Because I'm Windows OS, it is easier to install it from Anaconda environment. First, we have to install anaconda first. Then, we install the acumos using command prompt anaconda. 

1. Download and install Anaconda Environment 
2. Run Anaconda's CMD 
3. Install package acumos AI : 

    pip install acumos 
![](https://imgur.com/UkUbZIm.png)
4. Set up and install protocol buffer 
    
    conda install -c anaconda libprotobuf
![](https://imgur.com/0zVUwVY.png) 

## Example 
I've tried the example code below but still did not work. 

```Python
from acumos.session import AcumosSession
 from acumos.modeling import Model, List, create_dataframe
 
 import numpy as np
 import pandas as pd
 from sklearn.datasets import load_iris
 from sklearn.ensemble import RandomForestClassifier
 
 iris = load_iris()
 X = iris.data
 y = iris.target
 
 clf = RandomForestClassifier(random_state=0)
 clf.fit(X, y)
 
 # here, an appropriate NamedTuple type is inferred from a pandas DataFrame
 X_df = pd.DataFrame(X, columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width'])
 IrisDataFrame = create_dataframe('IrisDataFrame', X_df)
 
 # ==================================================================================
 # # or equivalently:
 #
 # IrisDataFrame = create_namedtuple('IrisDataFrame', [('sepal_length', List[float]),
 #                                                     ('sepal_width', List[float]),
 #                                                     ('petal_length', List[float]),
 #                                                     ('petal_width', List[float])])
 # ==================================================================================
 
 def classify_iris(df: IrisDataFrame) -> List[int]:
     '''Returns an array of iris classifications'''
     X = np.column_stack(df)
     return clf.predict(X)
 
 model = Model(classify=classify_iris)
 
 session = AcumosSession()
 
 session.dump(model,'Iris_sklearn','directory')
```
[Source Code](https://hackmd.io/_HQsU8gqSeyGZPYDB4lmRw?both)