2 research outputs found

    Functional Federated Learning in Erlang (ffl-erl)

    Full text link
    The functional programming language Erlang is well-suited for concurrent and distributed applications. Numerical computing, however, is not seen as one of its strengths. The recent introduction of Federated Learning, a concept according to which client devices are leveraged for decentralized machine learning tasks, while a central server updates and distributes a global model, provided the motivation for exploring how well Erlang is suited to that problem. We present ffl-erl, a framework for Federated Learning, written in Erlang, and explore how well it performs in two scenarios: one in which the entire system has been written in Erlang, and another in which Erlang is relegated to coordinating client processes that rely on performing numerical computations in the programming language C. There is a concurrent as well as a distributed implementation of each case. Erlang incurs a performance penalty, but for certain use cases this may not be detrimental, considering the trade-off between conciseness of the language and speed of development (Erlang) versus performance (C). Thus, Erlang may be a viable alternative to C for some practical machine learning tasks.Comment: 16 pages, accepted for publication in the WFLP 2018 conference proceedings; final post-prin

    Extending a property-based testing tool with parallel and distributed execution

    Get PDF
    [Abstract] Software testing plays an important role in software development, as it not only helps find bugs in the code, but also boosts the confidence of the developers that the program behaves correctly, besides reducing the cost of fixing such errors or flaws if done in early stages. One of the most common methods of software testing is unit testing, which tests individual components of the software by asserting whether for cherry-picked test cases (i.e., for a given input), the component or unit produces the expected output. This approach to testing has however its downsides, as it is a tedious time-consuming activity, prone to errors of the developer, such as not covering every possible case. Property-Based Testing is a method of testing that fixes the problems found in unit testing, for it uses properties, which are simply logical statements that capture partial correctness of the program, to generate random input to test whether the program satisfies those properties or not. However, while automation allows for the execution of many more tests, increasing their number also means longer test running times. The main goal of this project is to extend PropEr, the most powerful property-based testing tool written in Erlang, with parallel and distributed execution and measure the obtained speedup from doing so.[Resumo] Probar o noso código é unha das cousas máis importantes na disciplina do desenvolvemento do software, xa que non só nos axuda a encontrar erros no noso código, se non que tamén aumenta a confianza das desenvoldedoras e desenvoldedores de que o seu programa se comporta correctamente, ademais de reducir o custo de arranxar devanditos erros ou fallos se se fai dende o inicio. Un dos métodos máis comúns para facer probas ao software son as denominadas probas de unidade, nas que para probar compoñentes individuáis do software, mírase se para casos específicos (ou sexa, para entradas concretas) o compoñente ou unidade produce a saída esperada. Esta forma de probar o código ten, porén, as súas desvantaxes, xa que é unha tarefa tediosa e pesada de facer que consume moito tempo, e a maiores é propensa e susceptíbel a erros das desenvoldedoras e desenvolvedores, coma non cubrir tódolos casos posibles. As probas baseadas en propiedades son un método de probar software que soluciona estes problemas das probas de unidade, xa que no seu lugar empregan o concepto de propiedade, que é un predicado lóxico que captura a corrección parcial do programa. Estas propiedades son usadas para xerar entradas aleatorias para comprobar se o programa satisface as súas expectativas ou non. Porén aínda que a automatización permite realizar moitas máis probas, os tempos de execución tenden a incrementarse correlativamente. O obxectivo principal deste proxecto é estender PropEr, a ferramenta de probas baseadas en propiedades máis potente escrita en Erlang, para permitir a súa execución paralela ou distribuída.Traballo fin de grao (UDC.FIC). Enxeñaría informática. Curso 2019/202
    corecore